Я пытаюсь автоматизировать (Java + Selenium) тестирование сайта, но у меня много проблем с ожиданием и получением того, что я хочу.
Когда у меня есть несколько готовых модульных тестов, моя проблема заключается в следующем:
* Если я не ставлю никаких ожиданий и просто выполняю код, Firefox загружается, страница загружается и больше ничего не делает. У меня сложилось впечатление, что страница загрузится до возврата управления, но здесь, похоже, этого не происходит. Если вместо запуска я ставлю точку останова, отлаживаю ее и запускаю шаг за шагом, все работает отлично, поэтому я думаю, что это проблема времени.
Если я напишу это, то это тоже хорошо работает:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Но если я хочу, чтобы он ждал, пока элемент будет виден (например, поле имени пользователя или пароля) или кнопка будет нажата (например, кнопка входа), курсор остается в строке URL и ничего не делает, кроме загрузки страницы .
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//*[@id='isc_E']"))));
(Да, я знаю, что мог бы использовать идентификатор вместо xpath, это остаток одной из моих многочисленных попыток).
После этого фрагмента кода он должен выполнить несколько sendKeys() в двух текстовых полях, затем щелкнуть() на кнопке входа и остановиться. Мне нужно добавить что-нибудь еще, чтобы фактически выполнить команду ожидания, или этого должно быть достаточно?.
Я знаю, что, вероятно, где-то довольно глупо все испортил, но я просто не могу найти или понять это самостоятельно.
Спасибо.