Как я могу получить сетевые файлы в Google Chrome с селеном? - PullRequest
0 голосов
/ 02 ноября 2018

Я использую селен для тестирования в проекте, но у меня проблема. Мне нужно получить сетевые файлы из Google Chrome, когда я проверяю элемент. enter image description here

В этом разделе мне нужны эти файлы, это файлы JSON, и мне нужна их информация.

             //String scriptToExecute = "var performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {}; var network = performance.getEntries() || {}; return network;";
        String scriptToExecute = "var network = performance.getEntries() || {}; return network;";
        java.util.List<String> s= executeJavaScript(scriptToExecute)

Атрибут String, верните мне странный список странных объектов сети, не очень хорошая информация для меня.

Это моя проблема, мне нужны файлы JSON, но мой код возвращает мне другие вещи.

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

1.Создайте веб-драйвер с возможностью мониторинга сетевых вызовов.

    public static WebDriver getDriver() {
            ChromeOptions options = new ChromeOptions();
            System.setProperty("webdriver.chrome.driver", Driver local path);

            DesiredCapabilities cap = DesiredCapabilities.chrome();
            LoggingPreferences logPrefs = new LoggingPreferences();
            logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
            cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);

            Map<String, Object> perfLogPrefs = new HashMap<String, Object>();
            perfLogPrefs.put("traceCategories", "browser,devtools.timeline,devtools"); // comma-separated trace categories
            options.setExperimentalOption("perfLoggingPrefs", perfLogPrefs);
            cap.setCapability(ChromeOptions.CAPABILITY, options);

            return new ChromeDriver(cap);
        }
  1. Теперь получите записи в журнале, используя следующий код.

    for (LogEntry entry : driver.manage().logs().get(LogType.PERFORMANCE)){
                    System.out.println(entry.toString());
    }
    

3.Результат будет в следующем формате JSON.

{
    "webview": <originating WebView ID>,  
    "message": { "method": "...", "params": { ... }} // DevTools message.
}
0 голосов
/ 19 февраля 2019

Вы можете использовать return JSON.stringify(network), заменить return network. Затем executeJavaScript(scriptToExecute) вернет json , но все равно String Если вы не измените json на java.You можно использовать org.json. Just

JSONArray netData = new JSONArray (driver.executeScript (scriptToExecute) .toString ());

0 голосов
/ 02 ноября 2018

Используйте BrowserMobProxyServer вместе с селеном для получения сведений о сети каждого сетевого формата HAR.

// Set up BrowserMobProxyServer while initiation driver
proxy = new BrowserMobProxyServer();
proxy.start(0);

Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);

// configure it as a desired capability
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);

driver = new ChromeDriver(capabilities);
proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);

 proxy.newHar("google.com");

// Do all your navigation in selenium/ selenide code

driver.get("http://google.com");

// After navigation, you can find network details stored HAR
Har har = proxy.getHar();

При необходимости вы можете сохранить его в файл перед выходом из драйвера,

Har har = proxy.getHar();
File harFile = new File(sFileName);
har.writeTo(harFile);

proxy.stop();
driver.quit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...