2013-10-09 2 views
1

Я использую Java и Firefox и Firebug Я не могу найти элемент на второй странице. Например, если я вхожу в gmail, я не могу найти и нажать на отправленные элементы или любую другую кнопку на следующей странице.Selenium Web Driver: не удалось найти элемент на 2-й странице.

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

Просьба предложить любое решение

+0

Ссылки Gmail очень динамичны. Но все же, можете ли вы сообщить нам путь xpath или css, который вы использовали для элемента на второй странице? – Hemanth

+2

Я бы не пытался автоматизировать тестирование на страницах Google, они очень сложны, постоянно меняются и, таким образом, делают очень плохие локаторы. Вы просто пытаетесь проверить электронную почту пользователя? Для этого существует множество библиотек, не требующих браузера. – Arran

ответ

1

Если вы не рассказываете WebDriver подождать, пока не будет загружен элемент на 2-й странице, WebDriver просто попробуйте нажать элемент, как только его в состоянии работать. Это плохо, потому что ваш элемент еще не загружен, пока WebDriver уже пытается щелкнуть его ... TIMEOUT mayhem ensues ...

Попробуйте следующее ... используйте класс WebDriverWait, чтобы заставить WebDriver ждать, пока элемент страницы должны быть загружены, прежде чем щелкнуть его ...:

WebDriverWait wait = new WebDriverWait(driver, 100); 
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("your xpath"))); 
element.click(); 

«100» в WebDriverWait (водитель, 100) максимальное количество секунд вы хотите, чтобы WebDriver повторно попытке найти элемент перед ним раз)

0

Я согласен с ответом на CODEBLACK. Также вы можете пойти на неявное ожидание, которое заставит селен ждать неявно в течение определенного периода времени. Попробуйте выполнить следующие действия: - driver.manage(). Timeouts(). ImplicitlyWait (20, TimeUnit.SECONDS);

Вы можете указать время по вашему усмотрению. Лучший O Удача. , .!

Смежные вопросы