watir-webdriver函数不作为脚本执行,但适用于交互式ruby shell

时间:2013-05-20 20:35:05

标签: firefox watir watir-webdriver irb

我正在尝试使用watir为Web应用程序编写自动脚本。 UI中有一个滑块,范围从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位

1 个答案:

答案 0 :(得分:2)

正如您所提到的,b.div(:class, "scroll").click是激活按下该键的div, 可能有一些可能需要一段时间来激活div,并且当你在IRB中执行该操作时需要适当的时间来加载,因为执行另一行需要时间,但是当你在脚本中执行并执行在点击div之后立即执行send_keys操作,并且执行时没有及时激活该Div。

尝试在脚本中暂停/延迟一段时间,然后尝试执行send_keys

要暂停/延迟,您可以使用sleep(time_period)