WebDriver получает время для загрузки элемента с помощью implicitlyWait - PullRequest
1 голос
/ 23 марта 2012

Я ищу решение, чтобы получить время, чтобы нажать на элемент с помощью implicitlyWait в WebDriver (Java)

Пример: Допустим, я буду запускать WebDriver с неявно Waite = 30 секунд

После: webElement.click ();

Метод click () будет ожидать элемента 30 секунд, и когда элемент будет виден и готов к щелчку-> WebDriver будет щелкать по нему, но как мы можем потратить время, которое WebDriver тратит на нажатие на элемент, любые идеи, как Я могу получить это значение без использования каких-либо часов?

Ответы [ 2 ]

0 голосов
/ 26 марта 2012

Внутренне неявное ожидание просто вызывает findElement() снова и снова, отбрасывая любые ElementNotFoundException с, пока не будет возвращен элемент или не истечет время.

Вы могли бы написать свой собственный findElementImplicitlyWait(), просто сделав это - он далек от совершенства, но это должно сработать.

  1. Установите implicitlyWait на 0.
  2. создайте новый метод newFindElement(), который вызывает findElement() до тех пор, пока он не вернет элемент без исключения или до истечения 30 секунд.
  3. Используйте время по своему вкусу.

Приведенный ниже код (надеюсь, компилируемый =)) пытается сделать это и определить время ожидания.

private static final long WAIT_TIME = 30000;

public WebElement findElement(final By by) {
    WebElement elem = null;
    long targetTime = System.currentTimeMillis() + WAIT_TIME;
    do {
        try {
            elem = driver.findElement(by);
        } catch (NoSuchElementException ignored) {
            // nothing to do, element not found
        }
    } while ((elem == null) && (System.currentTimeMillis() < targetTime));
    if (elem == null) {
        throw new NoSuchElementException("No such element found: " + by);
    }
    System.out.println("Waited for " + (targetTime - System.currentTimeMillis()) + " ms.");
    return elem;
}
0 голосов
/ 25 марта 2012

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

WebElement elem = findElement(By.id("whatever"));
long time = System.currentTimeMillis();
elem.click();
System.out.println("The click and consecutive page load took: " + (System.currentTimeMillis() - time) + " ms.");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...