我正在尝试使用 watir 为 Web 应用程序编写自动化脚本。 UI中有一个 slider ,其范围是1到11。它是一个水平div。因此,如果按向右箭头键,数字就会增加 1,如果按向左箭头键,数字就会减少。我的问题是,当我尝试在 irb 中单独执行以下语句时,send_keys
函数工作正常,但一旦我将其移动到 ruby 脚本,它就不会执行 send_keys。
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")
如果我在 irb 中单独运行,则 send_keys(:arrow_right)
可以工作。当尝试运行脚本文件时,它不会给我任何错误并保持相同的数字,它只是说“断言失败,没有给出消息。”
b.div(:class, "scroll").click
是激活要按下右箭头键的 div。
我使用的是 watir-webdriver 0.6.2、Firefox 18.0.2、Windows 7 64 位
最佳答案
正如你提到的b.div(:class, "scroll").click
是激活要按下按键的div,
有可能这需要一段时间才能激活 div,并且当您在 IRB 中执行此操作时,会获得适当的加载时间,因为执行另一行需要时间,但是当您在脚本中执行此操作并执行时单击 div 后立即执行 send_keys
操作,并且执行没有获得适当的时间来激活该 Div。
尝试在脚本中暂停/延迟一段时间,然后尝试执行 send_keys
。
要暂停/延迟,您可以使用sleep(time_period)
关于firefox - watir-webdriver 函数不作为脚本执行,而是在交互式 ruby shell 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16657911/