我有一个硒刮刀,可以打开网站并登录。该网站是由react或react native编写的,页面数据从API获取。 我希望当 selenium 打开浏览器并登录时也捕获 Get 和 Post 请求。 我想从 API 请求之一获取特定标头。
我尝试了很多方法,例如 browsermobproxy (与 .net 6 不兼容)和其他方法,但没有人能解决我的问题。 我也尝试过这个:
ChromeOptions options = new ChromeOptions();
options.AddArgument("user-data-dir=C:\\Users\\Test\\AppData\\Local\\Google\\Chrome\\User Data");
// Create a new ChromeDriver object.
IWebDriver driver = new ChromeDriver(options);
// Navigate to the target website.
driver.Navigate().GoToUrl("https://test.com/");
// Get the network requests.
List<NetworkRequest> requests = driver.GetNetworkRequests();
// Print the request details to the console.
foreach (NetworkRequest request in requests)
{
Console.WriteLine($"Request URL: {request.Url}");
Console.WriteLine($"Request Method: {request.Method}");
Console.WriteLine($"Request Status Code: {request.StatusCode}");
Console.WriteLine($"Request Headers:");
foreach (var header in request.Headers)
{
Console.WriteLine($" {header.Key}: {header.Value}");
}
Console.WriteLine();
}
// Close the browser.
driver.Quit();
您可以将 devtools 与 chrome 驱动程序一起使用
using var driver = new ChromeDriver();
IDevTools devTools = driver;
DevToolsSession session = devTools.GetDevToolsSession();
await session.Domains.Network.EnableNetwork();
session.DevToolsEventReceived += OnDevToolsEventReceived;
void OnDevToolsEventReceived(object? sender, DevToolsEventReceivedEventArgs e)
{
if (e.EventName == "requestWillBeSentExtraInfo")
{
var requestHeaders = e.EventData["headers"];
}
if (e.EventName == "responseReceivedExtraInfo")
{
var responseHeaders = e.EventData["headers"];
}
}
driver.Navigate().GoToUrl("https://stackoverflow.com/");