使用Selenium如何获取网络请求

使用Selenium如何获取网络请求

问题描述:

我想使用selenium处理所有网络请求.我没有任何办法找到此解决方案.如果有人可以建议我或提供代码或库,我们将不胜感激.

I want to take all the network request using selenium..I am not getting any way to find this solution.If anyone can suggest me or provide code or library that will be appreciated.

开发工具未完全打开,但发现了一些网络,性能和其他结果.

Not exactly open by dev tools but found some network, performance and other results.

是的,您可以使用JavascriptExecutor来实现

Yes you can do that using JavascriptExecutor

代码如下:-

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new ChromeDriver(capabilities);
driver.get("http://www.google.com");
String scriptToExecute = "var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {}; var network = performance.getEntries() || {}; return network;";
String netData = ((JavascriptExecutor)driver).executeScript(scriptToExecute).toString();
System.out.println(netData);

OR

DesiredCapabilities d = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
d.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
WebDriver driver = new ChromeDriver(d);
driver.get("https://www.google.co.in/");
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
LogEntries les = driver.manage().logs().get(LogType.PERFORMANCE);
for (LogEntry le : les) {
    System.out.println(le.getMessage());
}

由于此JS标签,第一个代码重新运行了网络return network;".您可以删除不需要的实体的JS代码

The first code retrun network return network;" because of this JS tag. You can remove JS code of entity which you don't require

第二个代码返回性能

希望它会对您有所帮助:)

Hope it will help you :)