Firefox watir webdriver函数不作为脚本执行,而是在交互式ruby shell上工作

Firefox watir webdriver函数不作为脚本执行,而是在交互式ruby shell上工作,firefox,watir,watir-webdriver,irb,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_pre

我正在尝试使用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_键(:arrow_right)
可以工作。当试图运行一个脚本文件时,它不会给我任何错误,并且保持在相同的数字上,它只是说“断言失败,没有给出消息。”

b.div(:class,“scroll”)。单击
可激活要按下右箭头键的div


我使用的是watir webdriver 0.6.2、Firefox 18.0.2、Windows 7 64位

,正如您所提到的
b.div(:class,“scroll”)。单击
将激活要按键的div, 可能这需要一段时间来激活div,当您在IRB中这样做时,由于执行另一行需要时间,因此获得了适当的加载时间,但当您在脚本中这样做并执行时,您在单击div后立即执行
send_keys
操作,而且执行没有得到适当的时间来激活那个Div

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


要暂停/延迟,您可以使用
睡眠(时间段)

Awesome。非常感谢你!这很有帮助,但有一种替代模式正在进行,一旦脚本运行,在添加
sleep 5
之后就可以了,但是下一次我运行时,没有对脚本进行任何更改,它给了我一个错误
Selenium::WebDriver::error::StaleElementReferenceError:元素不再附加到行
$b.div(:class,“scroll”)上的DOM
。因此,它一次运行正常,下一次运行不正常。您是否在循环中运行脚本?或者只是运行两次脚本?我只是运行两次脚本。这是一个奇怪的错误。。我想知道UI是否在滚动分区上进行了一些破坏性的重新创建。像这样的自定义控件有时会带来很大的麻烦。。他们也可能对基于触摸的浏览非常不友好。我做了一次类似的调查,如果我多次运行脚本,就会出现这个错误,除非我给出
sleep5
。当我将其更改为
sleep 2
时,一切都运行得很好,我不知道原因,但暂停时间越长,错误就越频繁。