Проблемы с командами «Явное ожидание», когда мы используем в Selenium Web Driver [duplicate]

Явный пример ожидания

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement myDynamicElement= wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));

Явный пример ожидания

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://somedomain/url_that_delays_loading");
WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"));

Предположим, что myDynamicElement отображается на 6-й секунде, поэтому в обоих случаях драйвер будет ждать до 6 секунд, и управление переместится в последовательный письменный оператор, я хочу понять, что как неявное и явное ожидание в этом случае отличаются друг от друга? как они работают внутри страны?

0
задан 25 September 2017 в 11:54

2 ответа

Неявный Wait:

Implicit Wait - способ настроить экземпляр WebDriver для опроса HTML DOM (DOM Tree) в течение сконфигурированного времени, когда он пытается найти элемент или найти группу / коллекцию элементов, если они не доступны сразу. В соответствии с текущей спецификацией W3C время по умолчанию настроено на 0. Мы можем настроить время для Implicit Wait в любом месте внутри нашего скрипта / программы и можем перенастроить его в соответствии с нашей необходимостью. После того, как мы установим Implicit Wait, он будет действителен для времени жизни экземпляра WebDriver.

Здесь вы можете найти более detailed discussion here и документацию.

Явное ожидание:

Implicit Wait - это кодовый блок, который вы определяете, настраиваете и реализуете для экземпляра WebDriver для ожидания выполнения определенного условия перед продолжением для следующей строки кода , WebDriverWait вместе с определенными методами / предложениями WebDriver является одним из способов реализации Explicit Wait.

Вы можете найти более detailed discussion here и документация здесь.

Получение гранулярности:

Согласно вашему запросу Let say myDynamicElement is visible at 6th second, So in both the cases driver will wait till 6th seconds and control will move to the consecutive written statement.

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

WebDriver будет опросить HTML DOM ( HTML DOM ) для Explicit Wait независимо от того, видна ли DOM Tree (или несколько элементов, соответствующих вашему локатору) на 4-й / 6-й / 8-й секунде. Итак, в этом случае ваш скрипт задерживается на 4 секунды.

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement myDynamicElement= wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));

HTML DOM будет ждать максимум 10 секунд для элемента , отложенного на 4 secs , чтобы включить clickable (отображено и включено). [F25] возвращается назад, как только выполняется W3C . Если ExpectedConditions не выполняется в течение всей продолжительности настроенной временной шкалы, вы видите правильную 0 .

1
ответ дан 15 August 2018 в 16:02
  • 1
    HI, вы должны направить меня несколько дней назад, чтобы узнать, в чем преимущество явного неявного. Я думаю, что первые два абзаца не указывают на важное различие, и получение подробного ответа совершенно неверно. Позвольте мне объяснить вам ... (продолжение в следующем комментарии) – Rajagopalan 4 May 2018 в 13:44
  • 2
    Прежде всего, разница между неявным ожиданием и явным ожиданием заключается в том, что Implicit wait установлен в драйвере, но явное ожидание, которое оно не задано в драйвере, оно установлено в привязке локального языка. Вторая ошибка заключается в том, что ни одно из ожиданий не является статическим ожиданием, если тайминги установлены на 10 секунд, если элемент доступен через 5 секунд, оба момента немедленно разрешат дальнейшие действия. – Rajagopalan 4 May 2018 в 13:48

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

Синтаксис:

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

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

Синтаксис:

WebDriver driver = new FirefoxDriver();
WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.elementToBeClickable("Locator"));
0
ответ дан 15 August 2018 в 16:02

Другие вопросы по тегам:

Похожие вопросы: