2013-01-21 41 views
1

我希望Watir等到text_field中的文本消失或被替換。但是,當我嘗試這樣做時:Hot to Wait.until不是text_field中的字符串,用Watir?

Watir::Wait.until { browser.text_field(:id, "ContentPlaceHolder").value =! "textExample" } 

它會不斷在文本字段中打印字符串「false」。

如何在text_field中沒有textExample的情況下製作這個whait?

回答

1

問題

與您的代碼的問題是

value =! "textExample" 

注意,你有一個=!。我相信這實際上是指分配而不是的「textExample」,這是錯誤的。所以你真的說要把文本字段賦給false。

解決方案0 - 修復=!

如果修復的=!錯字是!=,它應該工作:

Watir::Wait.until { browser.text_field(:id, "ContentPlaceHolder").value != "textExample" } 

解決方案1 ​​ - 使用wait_until

當你的代碼將與固定錯字工作。我不相信這個建議是直接使用Watir :: Wait。您應該使用內置的wait_until方法。

browser.wait_until{ browser.text_field(:id, "ContentPlaceHolder").value != "textExample" } 

或使用wait_while(取決於您的閱讀喜好)

browser.wait_while{ browser.text_field(:id, "ContentPlaceHolder").value == "textExample" } 

解決方案2 - 使用wait_while_present

或者,你可能想使用Element#wait_while_present方法。

嘗試這樣做:

browser.text_field(:id => "ContentPlaceHolder", :text => "textExample").wait_while_present 
+0

其實,我是用=,但它並沒有太多的工作,所以我嘗試= !,並與最後一個在這裏submited。 你的browser.wait_while應該解決了我的問題! 的Watir :: Wait.until: 我只是一個to_s的簡單修正使它{browser.text_field!(:ID 「的ContentPlaceHolder」)value.to_S = 「textExample」} 不管怎麼說,謝謝! –