Явный селен ждет в стажере

Как я могу использовать явные ожидания, используя API-интерфейс стажера для функционального тестирования в стажере?

Есть несколько сценариев, в которых я хочу явно опросить, пока не будет выполнено условие. Например, я хочу дождаться появления в DOM двух или более элементов. Использование findAllByCssSelector блокирует выполнение на все неявное время ожидания вместо возврата сразу после того, как условие истинно.

Я вижу, что мне поможет только вспомогательная функция pollUntil, но похоже, что она не имеет доступа ни к одной из зависимостей модуля, определенных в тестовом модуле.

Как я могу использовать что-то вроде jQuery внутри pollUntil?


person Michael    schedule 04.09.2014    source источник


Ответы (1)


findAllByCssSelector ожидает неявного ожидания только в том случае, если элементы не найдены. Если элементы существуют, метод немедленно завершает работу с тем, что он находит, поэтому он не идеален, если вам нужно дождаться появления определенного количества элементов.

pollUntil - это способ условного ожидания. Однако вы правы в том, что у него нет доступа к зависимостям вашего модуля. Ваши зависимости загружаются в контексте исполнителя тестов Intern, а условие pollUntil будет выполняться в контексте браузера. Есть несколько способов получить нужный код в браузере. Если вы управляете тестовой страницей, вы можете просто изменить ее, чтобы загружать любые модули, которые вам нужны, до запуска тестов. Если вы не можете изменить тестовую страницу, вы можете использовать вызов executeAsync после загрузки страницы в свой тест, чтобы внедрить любые модули, которые вам нужны, в контекст страницы.

person jason0x43    schedule 05.09.2014
comment
Вы на 100% уверены в findAllByCssSelector? Эквивалентная функция selenium webdriver.js неявно ожидает. - person Michael; 05.09.2014
comment
comment
На самом деле при повторном прочтении ссылки кажется, что поведение такое, как вы указали... хотя я не знаю, что на этот метод влияет время «неявного ожидания», действующее во время выполнения. - person Michael; 05.09.2014
comment
Я считаю, что в документации просто говорится, что findAll, как и find, будет ждать неявное время ожидания, если элементы не найдены. Также как и find, когда элемент найден (по крайней мере 1 элемент), он возвращается немедленно. - person jason0x43; 05.09.2014