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

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

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

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


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

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

2 лайка

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

1 лайк

Во, отличная тема, как раз мне надо! :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:

Извините, только сейчас добрался до темы. Удалось разобраться?
Мне кажется, что сначала Вам нужно проверить что элемент недоступен через should_not_have, а только следующей командой делать .click()
Можете еще попробовать другой локатор найти.

1 лайк

Да, спасибо, всё в порядке уже :slight_smile: