使用Selenium如何获取网络请求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Selenium如何获取网络请求相关的知识,希望对你有一定的参考价值。
答案
不完全由开发工具打开,但发现了一些网络,性能和其他结果。
是的,你可以使用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);
要么
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());
}
第一个代码回溯网络return network;"
因为这个JS标签。您可以删除不需要的实体的JS代码
第二个代码返回性能
希望它能帮到你:)
另一答案
- 您可以使用“browsermob-proxy”,“LoggingPreferences”,“CloseableHttpClient”,“HttpURLConnection”来获取日志
- 如果你不想使用浏览器并希望获得响应,那么我建议去“CloseableHttpClient”。
- 复制URI(“www.somewebsite.com/v1/api/sign-in?”)。获取请求有效负载(将在该特定API URI中提供)。将所有参数传递给“&”,如“www.somewebsite.com/v1/api/sign-in?&username=xyz&password=1234566&app_id=12123214324234134&app_secret=213242345345345”(请记住app app和app secret非常独特,不要公开它任何地方)
- 获得URI后,此代码将为您提供JSON格式响应
HttpPost request = new HttpPost(str);
request.setHeader("content-type", "application/json");
HttpResponse response = client.execute(request);
BufferedReader bufReader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
while ((line = bufReader.readLine()) != null) {
builder=String.valueOf(line);
}
System.out.println(builder);
}
以上是关于使用Selenium如何获取网络请求的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Selenium 4 (devTools) 从网络选项卡获取响应正文
Selenium 在按钮单击后获取 http 请求 ajax url
VSCode自定义代码片段14——Vue的axios网络请求封装
VSCode自定义代码片段14——Vue的axios网络请求封装