Ошибка при первом выполнении тестов после обновления версии
#1
Отправлено 18 февраля 2013 - 18:46
При повторном запуске тест выполняется без ошибок, то есть проблема появляется только при первом запуске после обновления билда.
Пробовала после клика прописывать условие - если есть элемент с таким-то id, то кликнуть по нему, если нет - идти дальше. Не помагает.
Подскажите кто-нибудь, почему может возникать такая проблема.
Я новичок в освоении Selenium.
#2
Отправлено 19 февраля 2013 - 06:58
#3
Отправлено 19 февраля 2013 - 12:56
Браузер Firefox 18.0.2
Ошибка возникает когда поднимается pop-up, там нужно выбрать значение из выпадающего списков. Так вот при первом выборе значения из списка загрузка самого списка длится несколько секунд, но Webdriver не дожидаясь загрузки выбирает элемент списка и кликает на "Ок", срабатывает валидация и выполнение теста останавливается.
Я так понимаю мне тут нужно указать какое-то явное ожидание? Но элемент (в данном случае кнопка "Ок") изначально есть на странице, и дожидаться, пока он загрузится, не надо...
Подскажите, пожалуйста, как выйти из этой ситуации.
И было бы весьма актуально сам кусочек кода для этого посмотреть. Интересует для Java.
Сейчас это выглядит так:
driver.findElement(By.xpath(".//*[@id='general']/li[7]/div[1]/a/span")).click(); //кнопка для вызова попапа
driver.findElement(By.id("driversLiset")).click();
driver.findElement(By.id("driversLiset")).sendKeys(Keys.ARROW_DOWN);
driver.findElement(By.id("PartyVehicle_DriverInjury")).sendKeys("ушиб");
driver.findElement(By.id("postVehicleBtn")); //кнопка "ОК"
Буду благодарна за любой совет.
#4
Отправлено 19 февраля 2013 - 13:18
И какая срабатывает валидация? По-хорошему дожидаться загрузки списка следует. Для теста можно просто задержку поставить и посмотреть изменится ли ситуация.
#5
Отправлено 19 февраля 2013 - 14:20
А поточнее какая именно версия WebDriver?
И какая срабатывает валидация? По-хорошему дожидаться загрузки списка следует. Для теста можно просто задержку поставить и посмотреть изменится ли ситуация.
Стоит Eclipse Juno Service Release 1, в него копирую тесты из Selenium IDE в формате Java / JUnit4 / WebDriver, после того уже модифицирую их в Eclipse.
В pop-up просто нужно выполнить одно из 2 действий: либо заполнить поля вручную (одно поле - обязательное), либо выбрать из списка (в этом случае поля для ввода пропадают). Я выбирала из списка, но выходит, что "Ок" кликала раньше, чем пропадали поля, и на короткий миг поле (которое вроде как должно было к тому моменту исчезнуть) подсвечивалось как незаполненное.
Добавила задержку в 2сек., теперь проблема исчезла. Спасибо!
Но ставить просто задержку, имхо, не очень хороший выход.
Тем более, такая ситуация повторяется в разных местах.
#6
Отправлено 19 февраля 2013 - 14:55
На второй раз страница может закешироваться и поэтому работает быстрее, поэтому тест старабывал до этого.
Про задержку все верно - ищите как дождаться появления/исчезновения элемента в соседних темах.
#7
Отправлено 19 февраля 2013 - 15:01
WebDriverWait wait = new WebDriverWait(driver, 60); wait.until(ExpectedConditions.presenceOfElementLocated(locator));
это ищет элемент по локатору в течении минуты с интервалом в 500 мсек (если не ошибаюсь)
#8
Отправлено 19 февраля 2013 - 15:15
А кто-нибудь может подсказать как это
будет выглядеть на джаве?WebDriverWait wait = new WebDriverWait(driver, 60); wait.until(ExpectedConditions.presenceOfElementLocated(locator));
#9
Отправлено 19 февраля 2013 - 15:29
забыл написать, просто
#10
Отправлено 19 февраля 2013 - 15:55
это и есть Джава />
забыл написать, просто
Правда?? А почему мне Eclipse подсвечивает почти все параметры как ошибки? Или какую вы используете среду и библиотеки?
Прошу прощения заранее за свои глупые вопросы :)
#11
Отправлено 19 февраля 2013 - 16:14
import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait;
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных