2015-06-16 4 views
0

Я использую Selenium, и мне нужно начать тестирование моей страницы не только при рендеринге страницы, но и при завершении всей инициализации javascript. Я хочу избежать условия гонки в своем тесте, потому что некоторые элементы еще не инициализированы должным образом.Запуск теста Selenium после завершения Javascript

Простой вопрос: есть ли способ спросить DOM, когда весь рендеринг javascript заканчивается ?. Мы знаем, когда рендер сделан из-за onDocumentReady. Но тогда мы можем начать инициализацию некоторых javascripts и сделать некоторую бизнес-логику.

Я хочу знать, есть ли какой-либо механизм, чтобы узнать, когда закончилось выполнение всего javascript. Я прочитал использование объекта обещания для некоторой инициализации async, но я искал более общий способ узнать его.

+0

Я думаю, что это дубликат этого вопроса. http://stackoverflow.com/questions/1033398/execute-javascript-when-page-has-fully-loaded – Swagin9

ответ

2

Нет никакого общего способа узнать, что код JavaScript завершил свою инициализацию. На одной странице могут загружаться десятки библиотек JavaScript, которые могут все делать самостоятельно. Даже если вы можете обнаружить, что начальная операция Ajax завершена, обычно нет способа узнать, что за этой начальной операцией не последуют другие операции, которые также являются частью инициализации.

Что вам нужно сделать, это найти способ определить это, , что касается вашего теста, страница была инициализирована для начала теста. Как это сделать, это зависит от кода JavaScript, который выполняется на вашей странице. Вот пример. Для некоторых моих приложений я использую DataTables для управления некоторыми моими таблицами. Данные, отображаемые в таблице, загружаются через вызов Ajax. Для некоторых тестов я знаю, что как только данные будут загружены, таблица будет иметь X количество строк, поэтому я жду, пока это множество строк появится в таблице, а затем приступите к тесту. Это работает для некоторых тестов. Для других тестов, которые выполняют более сложное тестирование, я должен зарегистрировать обработчик событий и прослушать событие перерисовывания таблицы перед тем, как тест может продолжаться. Если единственное, что я тестирую, это таблица, было бы расточительно ждать, пока ничего не получится на странице завершена инициализация.

+0

Да, это именно то, что мы делаем, но все же есть некоторые значения, которые иногда присутствуют на время и иногда достигают времени ожидания селена. Увеличьте время ожидания, чтобы увеличить общее время моего теста интеграции. – paul

Смежные вопросы