Явные и неявные ожидания - помогите разобраться

Где то в исходниках по этому классу натыкался на

а не выдержками из javadoc который написан много лет назад неизвестно кем 

ну я не стал проверять, ошиблись ли они рекомендовав не использовать Xpath .
почитал решил не переходить больно много локаторов с Xpath было

Есть много причин:

  1. Жизнь локатра Xpath очень короткая, так как многие изменения на странице сделают этот локатор невалидным
  2. Поиск по Xpath в ИЕ очень медленный. В хроме вы можете не заметить визуально этого, но ИЕ это видно сразу же.
  3. Писать правильные умные Xpath, которые не будут ломаться при изменениях, не так легко как кажется - CSS локаторы в разы проще

Я имел ввиду конкретно для реализации PageFactory.initElements(new AjaxElementLocatorFactory(webDriver, 10), page);

1,3 Каким боком к вашим высказываниям AjaxElementLocatorFactory?
2 Это уже не актуально в течении нескольких лет. Но то ли обучающие курсы лагают, то ли комьюнити - выводя этот “факт” на уровень “городских легенд”.

И снова прошу помощи по теме явных ожиданий!

Подскажите как быть в такой ситуации - пользователь вводит логин и пароль и может оказаться на одной из двух страниц. Вопрос - как правильно сделать проверку на какой странице мы сейчас находимся?

Имплицитные ожидания установлены в 0, используется WebDriverWait и инициализация страниц сделана через AjaxElementLocatorFactory.

Если на странице сделать метод

@FindBy(id = "pushOutMessage")
private WebElement messageText;

public boolean pageIsPresent() {
	return messageText.isDisplayed();
}

То получается неправильно - если действительно страница эта, то ок, вернет true, а если - нет, то будет ожидание в течении N секунд и выброс NoSuchElementException (можно сделать обертку try catch, но проблема именно в долгом ожидании).

Если в таких случаях проверять неявным ожиданием, то тоже неправильно - ведь ожидания в них установлено 0, и получится что если этот элемент не успеет загрузиться будет возвращен false, хотя страница - та.

Вот мне и не понятно теперь - как сделать правильно? Так чтобы можно было быстро определить - на нужной мы странице или нет?

Надеюсь все понятно объяснил. Заранее спасибо за советы!

Это офтоп. Заводи отдельную тему

Создал новую тему по вопросу:

лучший способ открыть книжку по selenium и разобраться с вопросом как что работает.
К сожалению на русском языке нет ничего зато на английском документации по selenium прям изобилие вот вам одна из неплохих книг по selenium Unmesh Gundecha - Selenium Testing Tools Cookbook [ноябрь 2012, PDF/EPUB, ENG] :: RuTracker.org
ну и вообще packt publushing очень хорошее издание на оффсайте есть еще 3 книги про то как работает selenium. При прочтении книг должно отпасть половину вопросов

1 лайк

Спасибо, обязательно почитаю!
Кстати говоря, мне легче разобраться с чем-то используя разные подходы - как просмотр лекций/чтение статей, так и обсуждение на форуме/лично. Так сказать со всех стороны подойти к теме :smile: Да и параллельно обычно выясняется что-то полезное