Проверьте время загрузки в тесте WebDriver во время выполнения - PullRequest
0 голосов
/ 27 сентября 2018

Я использую Selenium WebDriver 3.14, и тест выполняется в браузере Chrome.Мне нужно измерить время отклика страницы во время выполнения, чтобы проверить, находится ли она под заданным значением.Если оно больше этого значения, необходимо выполнить некоторые дополнительные действия.Поэтому мне нужно другое решение, чем System.currentTimeMillis(), потому что проверка этого значения должна выполняться автоматически в фоновом режиме.Это AJAX-подобное окно, поэтому, когда загрузка занимает слишком много времени, его следует закрыть скриптом.Пример окна:

example window

Ответы [ 4 ]

0 голосов
/ 06 октября 2018

Вы должны попробовать установить Настройки ведения журнала через возможности CapabilityType.LOGGING_PREFS для Performance-Log .

Например:

LoggingPreferences logs = new LoggingPreferences(); 
logs .enable(LogType.PERFORMANCE, Level.ALL);
caps.setCapability(CapabilityType.LOGGING_PREFS, logs); 

youможно получить записи в журнале производительности, как показано ниже.

for (LogEntry entry : driver.manage().logs().get(LogType.PERFORMANCE)) {
    System.out.println(entry.toString());
    //do the needful
}
0 голосов
/ 01 октября 2018

Типичным решением этой проблемы является попытка поймать против ожидания.Например, если следующим шагом является нажатие кнопки, которая показывает, как только загрузка завершится:

    WebDriverWait wait = new WebDriverWait(driver, LOADING_TIMEOUT);

    WebElement webElement;
    try {
        webElement = wait.until(elementToBeClickable(By.id(id)));
    } catch (TimeoutException ex) {
        // Close loading window
        return;
    }

    webElement.click();

Однако существует общая проблема, если вы используете неявные тайм-ауты в Selenium.Это работает не слишком хорошо, особенно если неявный тайм-аут длиннее, чем LOADING_TIMEOUT, так как это замедляет цикл опроса в wait.until().

. В этом случае самое простое решение - временно уменьшитьнеявное время ожидания:

    WebDriverWait wait = new WebDriverWait(driver, LOADING_TIMEOUT);

    WebElement webElement;
    try {
        driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
        webElement = wait.until(elementToBeClickable(By.id(id)));
    } catch (TimeoutException ex) {
        // Delay any further interaction until the timeout has been restored
        webElement = null;
    } finally {
        driver.manage().timeouts().implicitlyWait(DEFAULT_TIMEOUT,
                TimeUnit.SECONDS);
    }

    if (webElement != null)
        webElement.click();
    else
        // Close loading window
0 голосов
/ 04 октября 2018

Если я правильно понимаю, вы можете уменьшить время в selenium.waitForPageToLoad("100000"); до желаемого заранее заданного значения, скажем, 20 секунд.Поэтому, если вы хотите, чтобы загрузка страницы прекратилась, если она не была загружена в течение 20 секунд, попробуйте что-то вроде этого:

long start = System.currentTimeMillis();    
try {
      selenium.waitForPageToLoad("20000");
      System.out.println("The page load is too long!");
} catch {
      long timeToLoad= (System.currentTimeMillis()-start);
      System.out.println("The page loaded in " +timeToLoad+ " seconds.");
}
0 голосов
/ 27 сентября 2018

Я думаю, что вы ищете тестирование API, а не тестирование автоматизации.

Учебник по настройке и использованию тестирования API почтальона

Надеюсь, это поможет

edit:

В качестве альтернативы, более легкое решение для тестирования API:

Онлайн-тестер API

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