Ruby 单击事件进程,但watir webdriver/selenium webdriver仍会在速度更快的Mac上抛出超时错误

Ruby 单击事件进程,但watir webdriver/selenium webdriver仍会在速度更快的Mac上抛出超时错误,ruby,cucumber,selenium-webdriver,watir-webdriver,Ruby,Cucumber,Selenium Webdriver,Watir Webdriver,正在使用的宝石: watir-webdriver-0.6.2 selenium-webdriver-2.27.2 在所有系统上使用Firefox 16.0.2 情况: 我们有一个模式窗口,在运行后关闭 link(:text, 'Continue').click 系统1: 硬件概述: 型号名称:MacBook Air 型号标识符:MacBookAir4,2 处理器名称:英特尔酷睿i5 处理器速度:1.7 GHz 处理器数量:1 核心总数:2 内存:4 GB OS:OSX10.8.2 系统

正在使用的宝石:

  • watir-webdriver-0.6.2
  • selenium-webdriver-2.27.2
在所有系统上使用Firefox 16.0.2

情况: 我们有一个模式窗口,在运行后关闭

link(:text, 'Continue').click
系统1: 硬件概述:

  • 型号名称:MacBook Air
  • 型号标识符:MacBookAir4,2
  • 处理器名称:英特尔酷睿i5
  • 处理器速度:1.7 GHz
  • 处理器数量:1
  • 核心总数:2
  • 内存:4 GB
  • OS:OSX10.8.2
系统1结果:始终成功

系统2:

  • 型号名称:MacBook Pro
  • 型号标识符:MacBookPro10,1
  • 处理器名称:英特尔酷睿i7
  • 处理器速度:2.3 GHz
  • 处理器数量:1
  • 核心总数:4
  • 内存:16GB
  • OS:OSX10.8.2
System 2结果:执行单击,然后在指定时间后抛出超时::错误

中间系统(对不起,我没有完整的规格可用)是一款新的Mac Mini,也带有Mountain Lion。这个系统一直在失败,直到在尝试跟踪这个问题时,我在产生超时的特定调用中添加了puts语句。当然,这导致了一种持续的成功状态,这表明了我们亲切地称之为海森误差

puts语句是在第613行附近的lib/selenium/webdriver/remote/bridge.rb中的selenium webdriver代码中添加的,如下所示:

puts "-> #{verb.to_s.upcase} #{path}" if verb.to_s.upcase == 'POST'
这将打印出向浏览器发出的所有post请求。超时的特定post请求是单击请求之一。我没有完整的路径,但是如果需要的话,我会在周一添加它


有人知道如何使用watir/selenium来避免系统相关超时吗?

可能会使用wait\u until方法来等待加载页面

wait_until(:timeout => 20) { page.current_url =~ /some_url/ }

然后

find(".some_class").find('a', :text => /Continue/).click

你试过使用上面提到的任何等待方法吗?是的,我得到了相同的结果。请参阅下面我的评论,了解我尝试的内容。URL中没有可等待的更改。因此,我改为等待(超时:30){link(text:'Continue')。present?&&link(text:'Continue')。visible?}link(text:'Continue')。单击相同的结果。