Как заставить Selenium запускать тесты только после завершения $ (document) .ready ()? - PullRequest
7 голосов
/ 14 января 2011

Наш сайт выполняет большую часть JavaScript / jQuery в функции $ (document) .ready (), настраивая кнопки, загружая контент через ajax и т. Д. Selenium ожидает загрузки DOM, но затем приступает к тестированию, прежде чем.ready () завершил.

Частичное решение, похоже, использует проверку, чтобы увидеть, есть ли в браузере ожидающие запросы ajax:

selenium.browserbot.getCurrentWindow().jQuery.active == 0

Однако это не гарантирует, что мы неВсе еще не устанавливаю привязки для кнопок и прочего.

Любая помощь будет очень оценена.Текущее «лучшее» предложение заключается в добавлении элемента на страницу в конце метода .ready (), который Selenium может уловить в качестве сигнала для начала работы, но идея добавления такого кода для целей тестирования кажется в лучшем случае отрывочной..

Ответы [ 2 ]

3 голосов
/ 14 января 2011

Я полагаю, вы можете использовать проверку загрузки окна. Попробуйте это:

$(window).load(function(){  
  selenium.browserbot.getCurrentWindow().jQuery.active == 0 
});  
1 голос
/ 14 января 2011

Текущее «лучшее» предложение добавив элемент на страницу в конец метода .ready (), который Селен может поймать в качестве сигнала начать работать, но идея добавления такой код для тестирования кажется отрывочным в лучшем случае.

Лично я не думаю, что модификация вашего кода для улучшения тестируемости - это плохо. Если вы действительно не хотите загрязнять свои рабочие страницы, используйте какой-нибудь шаблонизатор, например PHP, для вывода кода только в режиме разработки / отладки.

Кроме того, вам не нужно использовать DOM для этого. Selenium имеет доступ к полному контексту javascript на странице, поэтому вы можете просто использовать глобальную переменную в качестве флага. Может быть, что-то, что вряд ли будет использовано другими, например SELENIUM_PAGE_FULLY_READY, затем проверяет Selenium на наличие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...