2013-05-20 11 views
2

我正在嘗試爲使用watir的web應用程序編寫自動腳本。 UI中有一個滑塊,範圍從1到11.它是一個水平分隔符。所以,如果按下右箭頭鍵,數字會增加1,如果您按下左箭頭鍵則數字遞減。我的問題是,當我嘗試單獨在irb中執行以下語句時,send_keys函數可以正常工作,但只要我將它移動到ruby腳本,它就不會執行send_keys。watir-webdriver函數不作爲腳本執行,但在交互式ruby shell中工作

assert($b.div(:class, "position").text == "2") 
$b.div(:class, "scroll").wait_until_present 
$b.div(:class, "scroll").click 
$b.div(:class, "scroll").send_keys(:arrow_right) 
assert($b.div(:class, "position").text == "3") 

send_keys(:arrow_right)如果我在irb中單獨運行,則可以正常工作。當試圖運行一個腳本文件時,它不會給我任何錯誤,並保持在同一個數字上,它只是說「失敗斷言,沒有給出消息。」

b.div(:class, "scroll").click用於激活要按下右箭頭鍵的div。

我使用的Watir-webdriver的0.6.2,火狐18.0.2,Windows 7的64位

回答

2

至於你提到b.div(:class, "scroll").click被激活上,關鍵是要壓在div, 有可能是需要一段時間來激活div的可能性,並且當你在IRB中這樣做時,因爲需要花時間來執行另一行,所以需要適當的時間來加載,但是當你在腳本中執行該操作並且正在執行時send_keys點擊div後立即採取行動,並且執行沒有得到適當的時間來激活該div。

嘗試在腳本中暫停/延遲一段時間,然後嘗試執行send_keys

給一個暫停/延遲,你可以使用sleep(time_period)

+0

太棒了。非常感謝!它有很多幫助,但有一種替代模式正在進行,一旦腳本運行,在添加'睡眠5'後罰款,但是再次運行時我沒有對腳本進行單一更改,它給了我一個錯誤'Selenium :: WebDriver :: Error :: StaleElementReferenceError:元素不再附加到'$ b.div(:class,「scroll」).'行上的DOM'上。所以,它一次運行良好,下一次不運行。 – Wish

+0

你在循環中運行腳本嗎?或者只是運行你的腳本兩次? –

+0

我只是運行腳本兩次。 – Wish

相關問題