Явные ожидания Selenium

250
16 декабря 2017, 06:42

Недавно начал интересоваться автоматизацией в тестировании и в качестве объекта для изучения выбрал рандомный сайт (ссылка будет ниже).

Недавно столкнулся с проблемой, которую вот уже три дня не могу решить собственными силами. На странице http://pdd.by/educ/ есть гиперссылка в тексте карточки активации Учебной программы, которая открывает некое изображение.

Нужно дождаться полной загрузки всех компонентов в том числе и кнопки [close] что бы продолжить дальнейшее выполнение тестов.

Из того что пробовал я:

public void waitForOpenImg(){
        wait.until(ExpectedConditions.presenceOfElementLocated(By.id("lightbox-secNav-btnClose")));
    }

А так же вот

ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[contains(@href,'#')]"));

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

Может быть кто-то подскажет как решить эту проблему?

Answer 1

Распространенная стратегия написания теста - это дождаться элемента, с которым будем взаимодействовать в следующем шаге. Причем лучше всего дождаться возможности совершения именно того действия, которого хотим совершить. Например, если хотим посмотреть какой-то атрибут или текст элемента, то достаточно дождаться presenceOfElementLocated, а если будем кликать, то лучше elementToBeClickable.

wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("div#jquery-lightbox a#lightbox-secNav-btnClose")));
READ ALSO
Как избежать ошибку при парсе строки в Long?

Как избежать ошибку при парсе строки в Long?

Мне надо просетить данные отеляДанные хранятся в файле txt, в таком виде:

314
Ошибка при отправке имейла из сервлета

Ошибка при отправке имейла из сервлета

Всем привет! Есть небольшая проблема, не отправляется имейл из сервлетаИспользуется java 1

271
REGISTER после INVITE SIP Java

REGISTER после INVITE SIP Java

Каждый раз, когда звоню по SIP через свой сервер, то ловлю INVITE, создаю запрос с полями CSeq, Call-id и тд,и псоле мне нужно отправить инвайт на другой...

216
Split Строка в Java Android

Split Строка в Java Android

По запросу на сервер приходит строка, которую я делю и вывожу на экран:

249