Size: a a a

QA — Автоматизация

2020 January 18

VD

Vadim Dudin in QA — Автоматизация
Oleg
ээ, а почему? Я насколько понимаю implicit это дефолтный вейтер, а explicit - конкретный на элемент. Я так подозревал, что это непересекающиеся вещи.
implicit же ожидает готовности страницы, а не определённого состояния, определенного элемента, если я правильно понимаю это просто разные вещи
источник

O

Oleg in QA — Автоматизация
By implicitly waiting, WebDriver polls the DOM for a certain duration when trying to find any element.

Из документации не очень ясно
источник

O

Oleg in QA — Автоматизация
но какого хрена так работает в любом случае не ясно :)

Я себе представлял кейс, что все элементы ждем допустим 10 секунд, а какая-нибудь таблица при обращении к базе отрисовывается 5 минут.
источник

AB

Alexei Barantsev in QA — Автоматизация
неявные ожидания управляют поведением функции findElement(s), если выставить неявные ожидания, например, 10 секунд, то функция findElement(s) будет ждать появления элемента в течение указанного времени (точнее говоря, не больше указанного времени)
источник

AB

Alexei Barantsev in QA — Автоматизация
то есть выполнение блокируется в этой операции на указанное время
источник

AB

Alexei Barantsev in QA — Автоматизация
а теперь подумайте, что будет, если у вас есть неявные ожидания на 10 секунд, и вы хотите использовать явные ожидания на 2 секунды вот так:
new WebDriverWait(driver, Duration.ofSeconds(2)).until(invisibilityOfElementLocated(By.id("someId")))
и элемента с заданным локатором на странице нет
источник

O

Oleg in QA — Автоматизация
Alexei Barantsev
а теперь подумайте, что будет, если у вас есть неявные ожидания на 10 секунд, и вы хотите использовать явные ожидания на 2 секунды вот так:
new WebDriverWait(driver, Duration.ofSeconds(2)).until(invisibilityOfElementLocated(By.id("someId")))
и элемента с заданным локатором на странице нет
я хочу наоборот
источник

O

Oleg in QA — Автоматизация
неявные 2 и явные 10
источник

O

Oleg in QA — Автоматизация
но  в целом не понимаю, почему нельзя было поддержать и оба случая
источник

AB

Alexei Barantsev in QA — Автоматизация
в каком смысле "я хочу"? я объясняю, почему не рекомендуется их использовать вместе, и почему нельзя считать, что они "независимые"
источник

AB

Alexei Barantsev in QA — Автоматизация
Vadim Dudin
implicit же ожидает готовности страницы, а не определённого состояния, определенного элемента, если я правильно понимаю это просто разные вещи
все команды ожидают готовности страницы (кроме команд для работы с окнами и фреймами)
источник

O

Oleg in QA — Автоматизация
Alexei Barantsev
а теперь подумайте, что будет, если у вас есть неявные ожидания на 10 секунд, и вы хотите использовать явные ожидания на 2 секунды вот так:
new WebDriverWait(driver, Duration.ofSeconds(2)).until(invisibilityOfElementLocated(By.id("someId")))
и элемента с заданным локатором на странице нет
я из примера в документации вижу, что если я использую только explicit, то он сделает find и кондишн в течении одного таймаута. Так?
источник

AB

Alexei Barantsev in QA — Автоматизация
не понял вопрос
источник

O

Oleg in QA — Автоматизация
// Initialize and wait till element(link) became clickable - timeout in 10 seconds
WebElement firstResult = new WebDriverWait(driver, Duration.ofSeconds(10))
       .until(ExpectedConditions.elementToBeClickable(By.xpath("//a/h3")));
источник

DZ

Denys Zverev in QA — Автоматизация
Alexei Barantsev
а теперь подумайте, что будет, если у вас есть неявные ожидания на 10 секунд, и вы хотите использовать явные ожидания на 2 секунды вот так:
new WebDriverWait(driver, Duration.ofSeconds(2)).until(invisibilityOfElementLocated(By.id("someId")))
и элемента с заданным локатором на странице нет
я бы предположил, что после неявные ожидания будут 12сек, но это не логично, так как там используется Timeouts а в другом Duration
источник

O

Oleg in QA — Автоматизация
если элемента нет, то драйвер ждет когда он появится и потом, когда он станет кликабельным в течении 10 секунд суммарно?
источник

AB

Alexei Barantsev in QA — Автоматизация
да, 10 секунд суммарно
источник

DZ

Denys Zverev in QA — Автоматизация
а если все же использовать неявные ожидания на 2 секунды и явные ожидания на 10 секунд?
источник

O

Oleg in QA — Автоматизация
Alexei Barantsev
да, 10 секунд суммарно
а если будет Imlicit 10с, а explicit 2 то драйвер будет ждать findElement 10с, а дальше что? Свалится с таймаутом или будет ждать еще 2с?
источник

O

Oleg in QA — Автоматизация
Я представлял, что в случае, если explicit > implicit, то он будет ждать findElement в течении implicit timeout, а потом оставшуюся разницу
источник