Скрипт Watir работает в irb, но не как проблема с синхронизацией скриптов? - PullRequest
2 голосов
/ 08 августа 2011

Этот скрипт запускается в irb, но не как отдельный скрипт:

require 'watir'  

b = Watir::Browser.start "http://www.google.com/"  
b.text_field(:name => "q").value = "foo"  
b.button(:name => "btnG").click  
b.link(:url => /foofighters/).click  

В последней строке происходит сбой при запуске вне irb (с сообщением об ошибке «элемент не найден»).Но работает отлично только при запуске от IRB.Может ли это быть проблема синхронизации?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 09 августа 2011

Вам нужно использовать .when_present, чтобы убедиться, что он ждет, пока он не появится

require 'rubygems'
require 'watir'  

b = Watir::Browser.start "http://www.google.com/"  
b.text_field(:name => "q").value = "foo fighters"  
b.button(:name => "btnG").click  
b.link(:url => /foofighters/).when_present.click 
1 голос
/ 09 августа 2011

Каждый раз, когда что-то работает, когда вы выполняете шаги один за другим, используя IRB, но терпит неудачу при запуске в качестве скрипта, первое, что нужно подумать, это «проблема синхронизации», так что ваши инстинкты находятся прямо на отметке.(В конце концов, синхронизация является самой большой разницей, если выполняемый код одинаков в обоих случаях)

Алистер предлагает одно потенциальное решение для устранения проблемы синхронизации.Другие примеры можно найти в watir-wiki в разделе « как ждать с watir »

...