Как в Selene пользоваться функциями wait_to и wait_for?

selene
webdriver
python
Теги: #<Tag:0x00007f7b621d4360> #<Tag:0x00007f7b621d4220> #<Tag:0x00007f7b621d40e0>

(Кирилл Савинов) #1

Начинаю осваивать Python+Selene. Пытаюсь заставить тест дождаться элемента на странице. Насколько понимаю, больше всего подходят для этих целей функции wait_to() и wait_for(). Но не могу понять как пользоваться этими функциями. Вставлял в качестве аргументов локаторы xpath, css и id, но пока не срабатывает.

Подскажите, пожалуйста.


(Maxim Zaitsev) #2

Selene итак ждет 4 секунды по умолчанию при поиске элемента.
Если нужно увеличить таймаут, то:


from selene.conditions import visible
from selene.support.jquery_style_selectors import s

some_element = s('#some_id').assure(visible, timeout=15)


(Кирилл Савинов) #3

Спасибо, добрый человек. Заработало!
По селениуму в сети гора информации, а по селену инфы очень мало.


(Ilya Brik) #4

Во, отличная тема, как раз мне надо! :slight_smile:
Ситуация такая: загружается кнопка с параметрами класса class=‘ui primary button small loading’
На кнопку можно нажать после того, как класс loading уходит. Пробовал сделать так:

s("button.primary").should_not_have(css_class("loading"), 40).click()

Но это не срабатывает, клик выполняется сразу.
Если делаю криво, типа такого:

s("button.primary").should(have.attribute("class", 'ui primary button small'), 40).click()

это срабатывает, но ведь это неправильно и некрасиво. Что я делаю не так? В Selenide работа с классом отрабатывала правильно:

$(byClassName("loading")).waitUntil(disappears, 40)

Полез в код селена - и вылез обратно :frowning:

Upd:
Вот в такой форме:

s(".loading").should_not_be(visible, 40)

оно работает.
Видимо я не понимаю чего-то базового… :confused: