我希望 Watir 等到 text_field 中的文本消失或被替换。但是,当我尝试这样做时:
Watir::Wait.until { browser.text_field(:id, "ContentPlaceHolder").value =! "textExample" }
它不断在文本字段中重复打印字符串“false”。
在 text_field 中没有 textExample 之前,我怎样才能做到这一点?
我希望 Watir 等到 text_field 中的文本消失或被替换。但是,当我尝试这样做时:
Watir::Wait.until { browser.text_field(:id, "ContentPlaceHolder").value =! "textExample" }
它不断在文本字段中重复打印字符串“false”。
在 text_field 中没有 textExample 之前,我怎样才能做到这一点?
问题
您的代码的问题是
value =! "textExample"
请注意,您有一个=!
. 我相信这实际上是在说“textExample”的非赋值,这是错误的。所以你真的是说将 false 分配给文本字段。
解决方案 0 - 修复 =!
如果您修复=!
to be的错字!=
,它应该可以工作:
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