Перейти к содержимому

Фотография

Вопрос к разработчику: разбор id


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 dummyguy

dummyguy

    Новый участник

  • Members
  • Pip
  • 16 сообщений
  • ФИО:dummyguy

Отправлено 28 мая 2012 - 12:38

Привет знатокам WebDriver!

Вопрос начинающего: почему WebDriver может работать "неустойчиво"?

Один и тот же тест может проходить до конца, а может прерываться из-за exception
по ненахождению элементов страницы.

Тест совсем несложный и связан с обходом страниц приложения:
- проверки элементов title страниц,
- поиск элементов input (кнопок перехода и возврата) и нажатия
на них.

Используется WebDriver 2.20.0 + IE7

Нестабильность удручающая: лишь 1 из 5-7 запусков проходит "чисто" без сбоев.

Как пример: разбор очень часто завершается со следующим сообщением в лог-файл:

Unable to find element with id == Backform_requestlist_button (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 313 milliseconds
For documentation on this error, please visit: http://seleniumhq.or...ch_element.html
Build info: version: '2.20.0', revision: '16008', time: '2012-02-27 19:03:59'
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_31'
Driver info: driver.version: RemoteWebDriver


С уважением,
dummy

Сообщение отредактировал dummyguy: 28 мая 2012 - 13:23

  • 0

#2 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 895 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 29 мая 2012 - 06:47

Unable to find element with id == Backform_requestlist_button (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 313 milliseconds


Знакомая проблема.
Когда обходишь страницы приложения - какие-нибудь лоадеры или "крутелки" присутствуют ?
Используешь ли ты где-нибудь в коде JS, типо:

JavascriptExecutor jsdriver = (JavascriptExecutor) driver;		
		 jsdriver.executeScript("document.getElementById('" +locator+"').value = '" + xxxxxxxxxxxxxxxxxxxxxxxxx + "'");

  • 0

#3 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 29 мая 2012 - 08:40


Unable to find element with id == Backform_requestlist_button (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 313 milliseconds


Знакомая проблема.
Когда обходишь страницы приложения - какие-нибудь лоадеры или "крутелки" присутствуют ?
Используешь ли ты где-нибудь в коде JS, типо:

JavascriptExecutor jsdriver = (JavascriptExecutor) driver;		
		 jsdriver.executeScript("document.getElementById('" +locator+"').value = '" + xxxxxxxxxxxxxxxxxxxxxxxxx + "'");


Судя по

Command duration or timeout: 313 milliseconds

проблема просто в таймаутах ожидания элемента. Выставьте implicityWait в размере, скажем, 10 секунд и посмотрите, что будет.

И да, если есть записи, аналогичные посту выше, то мой метод, скорее всего, не поможет. От них надо либо избавляться либо использовать обертки для ожидания появления элементов именно через JS.
  • 0

#4 mzzz

mzzz

    Новый участник

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Ольга
  • Город:Харьков

Отправлено 31 мая 2012 - 07:37

У меня та же беда с IE. Ожидания implicitlyWait почему-то никак не влияют на тесты в IE. При этом в Firefox тесты работают без сбоев. Проблему решила с помощью Explicit Waits: когда перехожу с одной веб-страницы на другую, делаю ожидание элемента, к которому собираюсь обратиться, следующим образом:

wait.until(elementIsPresent(By.id('my_id')));

public static Function<WebDriver, WebElement> elementIsPresent(final By by) {
    return new Function<WebDriver, WebElement>() {
        @Override
        public WebElement apply(WebDriver driver) {
	    return driver.findElement(by);
        }
    };
}

Но по сути получается, что это действие, аналогичное команде waitForElementPresent, которая есть в IDE, но которую не стали добавлять в selenium webdriver, т.к. посчитали ее ненужной. Вопрос, опять-таки, к знатокам, правильный ли это подход - каждый раз при переходе на новую веб-страницу использовать Explicit Waits в целях избежания сбоев тестов в IE?
  • 0

#5 499356863

499356863

    Новый участник

  • Members
  • Pip
  • 30 сообщений

Отправлено 04 июня 2012 - 06:02

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


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных