web-dev-qa-db-ja.com

セレンを使用してネットワーク要求を取得する方法

Seleniumを使用してすべてのネットワークリクエストを取得したいのですが、この解決策を見つける方法がありません。

Network Request

11
zsbappa

開発ツールによって正確に開かれていませんが、ネットワーク、パフォーマンス、その他の結果が見つかりました。

はい、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());
}

最初のコードはネットワークを再実行しますreturn network;"このJSタグのため。不要なエンティティのJSコードを削除できます

2番目のコードはパフォーマンスを返します

それがあなたを助けることを願っています:)

15
Shubham Jain
  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」のように、すべてのパラメータを「&」で渡します(アプリIDとアプリシークレットは非常に一意であり、公開しないでくださいどこでも)
  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);
        }

2
naveen kumar

それは私のために働いています

            ChromeOptions options = new ChromeOptions();
            LoggingPreferences logPrefs = new LoggingPreferences();
            logPrefs.enable( LogType.PERFORMANCE, Level.ALL );
            options.setCapability( "goog:loggingPrefs", logPrefs );
            WebDriverManager.chromedriver().setup();
            WebDriver driver = new ChromeDriver(options);
            driver.get("http://www.google.com");

            List<LogEntry> entries = driver.manage().logs().get(LogType.PERFORMANCE).getAll();
            System.out.println(entries.size() + " " + LogType.PERFORMANCE + " log entries found");
            for (LogEntry entry : entries) {
                System.out.println(entry.getMessage());
            }
1
Norayr Sargsyan