2009-08-28 2 views
0

Когда я использую webrat в режиме селена, visit быстро возвращается, как и ожидалось. Без проблем.Как мне заставить webrat/selenium «подождать» CSS-страницы для загрузки?

Я пытаюсь утверждать, что мои стили применяются правильно (глядя на фоновое изображение на разные элементы). Я могу получить эту информацию через JS, но кажется, что таблицы стилей не загружены и/или не были применены во время моего теста.

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

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

Есть ли простой способ обнаружить, что страница действительно действительно «готова»?

ответ

2

Это странно. Я знаю, что wait_for_page_to_load ждет всю страницу, включая таблицы стилей.

Если вы все еще считаете, что это не ждет, как должно, вы можете использовать wait_for_condition, которое будет выполнять javascript и ждать, пока не вернется true. Вот пример:

@selenium.wait_for_condition "selenium.browserbot.getCurrentWindow().document.body.style.backgroundColor == 'white'", "60000" 
+0

Спасибо. Это, вероятно, сделает это. У нас были всевозможные проблемы, фактически извлекающие текущее фоновое изображение элемента. На самом деле мы не могли имитировать «зависание», чтобы селектор CSS: hover работал, и в итоге использовал JS для изменения стилей - чтобы надежно обнаружить изменение в селене. – ndp

0

Мы столкнулись с этим, когда страница была загружена отчетности, даже если холодная часть Fusion еще доступ к базе данных для информации, чтобы отобразить. Последующая обработка затем произойдет слишком рано.

Посмотрите на абстрактный класс ожидания в API Selenium. Вы можете написать свой собственный вариант до(), который может проверять наличие определенного текста, текст уходить (в случае плавающего сообщения, которое исчезает при загрузке) или любого другого события, которое вы можете проверить в репертуар селена. На странице API даже есть хороший пример, который помогает ему настроить его.

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