使用Selenium如何获取网络请求

问题描述 投票:6回答:2

我想使用selenium接受所有的网络请求..我没有找到任何方法来找到这个解决方案。如果有人可以建议我或提供将被赞赏的代码或库。

Network Request

java selenium-webdriver webdriver
2个回答
10
投票

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

是的,你可以使用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代码

第二个代码返回性能

希望它能帮到你:)


0
投票
  1. 您可以使用“browsermob-proxy”,“LoggingPreferences”,“CloseableHttpClient”,“HttpURLConnection”来获取日志
  2. 如果你不想使用浏览器并希望获得响应,那么我建议去“CloseableHttpClient”。
  3. 复制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非常独特,不要公开它任何地方)
  4. 获得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);
        }

© www.soinside.com 2019 - 2024. All rights reserved.