Selenium Java неизвестное время Загрузка браузера - PullRequest
0 голосов
/ 14 мая 2018

Я новичок в селене Java, кто-нибудь может помочь и дать мне простой пример, как создать команду wait.until java?Пожалуйста, исправьте мой код, если не так, спасибо

import org.openqa.selenium.support.ui.WebDriverWait;
//lines of code
WebDriverWait waitVar = new WebDriverWait (driver, 1000);
waitVar.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"btnDraftReports\"]"))).click();

или я должен использовать это?

waitVar.until(ExpectedConditions.elementToBeClickable(By.id("btnDraftReports"))).click();

Спасибо и больше власти

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

visibilityOfElementLocated отличается от elementToBeClickable в отношении поведения.

Когда использовать что: Все ожидаемые условия зависят от сценария.

visibilityOfElementLocated : если вы хотите подождать, пока видимость веб-элемента будет отображаться на веб-странице, вы можете использовать эти ожидаемые условия.Это больше о видимости веб-элемента.

Пример:

  1. После входа на любой веб-сайт вы должны сообщить своему сценарию о том, что вход был успешно выполнен с помощью условия visibilityOfElementLocated.Вы можете рассмотреть изображение своего профиля или любую ссылку, которая появляется после входа в систему.

elementToBeClickable : когда вы хотите подождать, пока веб-элемент станет кликабельным.Это больше о способности щелкать веб-элемента.

Пример:

  1. При создании учетной записи вы должны были видеть флажок соглашения на многих веб-сайтах.Сценарий заключается в том, что вы не можете нажать кнопку регистрации, пока не установите флажок «прочитать соглашение».Здесь вам нужно будет использовать условие elementToBeClickable.

Покойся с кодом, который, я думаю, ты написал правильно.

Надеюсь, это поможет вам понять основное различие между упомянутыми условиями.

0 голосов
/ 14 мая 2018

Синтаксически оба выражения верны и действительны Стратегии локатора для Селен где:

  • By.xpath("//*[@id=\"btnDraftReports\"]"): В этом выражении используется xpath engine.
  • By.id("btnDraftReports"): В этом выражении используется атрибут id .

Однако, как только вы ожидаете ExpectedConditions чтобы вернуть элемент при вызове click(), поэтому вместо метода visibilityOfElementLocated() следует использовать метод elementToBeClickable() следующим образом:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"btnDraftReports\"]"))).click();
//or
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("btnDraftReports"))).click();

Викторины

Теперь спорный вопрос, какой локатор использовать id или xpath?

Так как Селен на практике id атрибут по-прежнему считается наиболее эффективным Стратегия локатора .

В ходе обсуждения вы получите еще больше идей Official locator strategies for the webdriver

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