Получение Watir для ожидания загрузки всех сторонних скриптов

Проблема

Поскольку изменение CSS для загрузки шрифта из Googlefonts я обнаружил, что иногда при локальном запуске наши тесты Watir будут терпеть неудачу, потому что они ждут загрузки GoogleFonts, и наше соединение зависло или просто занимает свое время.

Поскольку это проблема загрузки CSS, все элементы страницы доступны, поэтому я не могу использовать что-то вроде wait_until_present потому что материал присутствует, но Watir по какой-то причине не хочет играть с ним.

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

Что я пробовал

Я пробовал пропустить что-то вроде;

browser.wait.until do
 window_loaded = browser.execute_script '$(window).load(function() { return true; });'
 window_loaded == true
end

Но я не мог заставить это работать, и я не уверен, что это был бы правильный способ решить эту проблему в любом случае.

2 ответа

Снято с: http://watirwebdriver.com/waiting/

require 'watir-webdriver'
b = Watir::Browser.start 'bit.ly/watir-webdriver-demo'
b.select_list(:id => 'entry_1').wait_until_present
b.text_field(:id => 'entry_0').when_present.set 'your name'
b.button(:value => 'Submit').click
b.button(:value => 'Submit').wait_while_present
Watir::Wait.until { b.text.include? 'Thank you' }

вы также можете использовать:

sleep 2

Я лично использую sleep чтобы ждать, пока все не загрузится. Хорошо работает с AJAX.


См. Этот ответ.

begin
 Timeout::timeout(10) do
 # perform actions that may hang here
 end
rescue Timeout::Error => msg
 put "Recovered from Timeout"
end

licensed under cc by-sa 3.0 with attribution.