Watir webdriver - 单击一个元素而不是等待加载

时间:2015-03-10 12:43:35

标签: ruby selenium watir watir-webdriver

我的页面有2个边,单击左侧的其中一个按钮,刷新右侧。 现在我想看看如果我点击按钮太快而不让右侧完全加载,网站是否会卡住。

现在watir等待click命令返回,所以测试没有做它应该做的事情:

arr = ["div1", "div2", "div3"]
for i in 1..20 
    print "#{i}\r"
    choise = arr.sample
    b.div(:id=>choise).click
end

任何方式让它发送命令并返回没有任何延迟?

4 个答案:

答案 0 :(得分:1)

您是否在多个浏览器中获得相同的结果?

规范(可能会或可能不会通过不同的浏览器以相同的方式实现),表示webdriver prevents other commands from being executed while there are outstanding network requests。虽然,它还说应该等待document.readyState出现在当前处理命令的帧中,因此不清楚未完成的网络请求是应该仅应用于当前帧还是应用于所有帧。

但是,由于Webdriver是专为commands to be handled in a synchronous manner设计的,因此很可能不是为了做你想做的事情。

答案 1 :(得分:0)

不确定,但您可以尝试使用javascripts:

@browser.execute_script("document.getElementById('choise').click")

答案 2 :(得分:0)

b.div(:id => 'choise').exist? - 检查是否存在或不是

b.div(:id => 'choise').click

答案 3 :(得分:-1)

我认为titusfortner是正确的。但请看this answer

begin
  Timeout::timeout(10) do
    # perform actions that may hang here
  end
rescue Timeout::Error => msg
  put "Recovered from Timeout"
end