2011-08-08 70 views
2

此腳本運行在IRB,但並不作爲一個獨立的腳本:Watir腳本在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運行時工作得很好。這可能是時間問題嗎?

在此先感謝!

+0

感謝您對Alister問題的改寫! – rebnoob

+0

謝謝,查克和Zeljko,爲答案! – rebnoob

回答

2

您需要使用.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

我們何時添加.when_present方法?我一定錯過了那一個 –

+0

工程就像一個魅力!非常感謝你Alister! – rebnoob

+0

在watir 1.6中添加了.when_present - 它也位於watir-webdriver –

1

任何時候,當你通過一個使用IRB執行的步驟之一什麼工作的,但作爲一個腳本運行失敗,則首先要考慮的是'時間問題',所以你的直覺是正確的。 (如果正在執行的代碼在兩種情況下都是相同的,那麼定時畢竟是最大的差異)

Alister建議了一種解決計時問題的潛在解決方案。其他例子可以在「how to wait with watir」主題下的watir-wiki中找到

相關問題