почему я должен спать или ждать, используя watir-webdriver и firefox? - PullRequest
4 голосов
/ 15 сентября 2011

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

Я обновляю свои сценарии watir до watir-webdriver, и первый тест, который я провел на Firefox, дал:

Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"tag name","selector":"body"}

когда все, что я делал, входил в свое приложение (которое работало нормально), нажимал ссылку Build Info и делал:

@browser.text

Это происходило последовательно. Прочитав здесь, я поставил спать после нажатия и перед @ browser.text, и это сработало. Я пришел к выводу, что драйвер Firefox не ждет загрузки страницы, прежде чем попробовать

-> POST session/8607aaa2-d72d-448a-85e1-3f96a1766da1/element
{"value":"body","using":"tag name"}

Так что мой вопрос в том, является ли это единичным инцидентом (call @ browser.body, который не совсем типичный вызов), или мне придется использовать ожидание? Кажется, что вся красота watir теряется, если я не могу ожидать, что драйвер будет ждать, пока браузер не будет в состоянии готовности. Кроме того, есть ли группа разработчиков Google или что-то подобное для watir-webdriver? У меня такое чувство, что я буду видеть все больше и больше проблем (некоторые с IE9). Я, вероятно, также спрошу в блоге Алистера (что круто, кстати).

1 Ответ

6 голосов
/ 15 сентября 2011

Watir-WebDriver должен подождать, пока страница не будет готова, но проблема в том, что динамически генерируется столько контента, что на самом деле нет четкого определения готовности.

Это где ожидающий помощникметоды сияния: 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

Обновление:

Я думаюВаша проблема связана с родными событиями.Попробуйте отключить собственные события

profile = Selenium::WebDriver::Firefox::Profile.new
profile.native_events = false
b = Watir::Browser.new WEB_DRIVER, :profile => profile
...