2012-06-18 83 views
2

我有一个ruby脚本来打开浏览器。我已经设置为首先打开Firefox,然后是Chrome,如果由于某种原因FF失败 - 就像FF得到更新并且Selenium还没有赶上。Selenium :: WebDriver Wait(Ruby,Chrome)

等待函数/定义适用于FF,但总是打破Chrome。下面是Chrome浏览器启动的相关代码:

wait = Selenium::WebDriver::Wait.new(:timeout => $BROWSER_EXPLICIT_WAIT) 

的上述行:声明像后

b = Selenium::WebDriver.for :chrome 
b.driver.manage.timeouts.implicit_wait = $BROWSER_IMPLICIT_WAIT 

我是相当新的硒还和我用户wait.until命令代码在Firefox中正常工作。不过,我想用FF和Chrome来运行我的脚本。有没有办法在Chrome和FF中做到这一点?

谢谢

+0

究竟是什么问题,你看到什么错误? – Amey

+0

这就是implicit_wait命令的结果: 未定义的方法驱动程序为#(NoMethodError) –

+0

等待= ... $ BROWSER_EXPLICIT_WAIT)行似乎在我当前的开发机器上工作得很好。这很奇怪,因为我记得它特别不适用于我的原始开发机器(最近遭遇硬盘驱动器问题)。由于我不能重复它,我想现在我不会担心它。 –

回答

1

现在看到您提供的错误,它变得更容易解决。

的原因是 - 你命名的硒驱动程序实例为b

但定义隐式时间为

b.driver.manage.timeouts.implicit_wait = $BROWSER_IMPLICIT_WAIT

即与b.DRIVER,因此错误信息 - undefined method 'driver' for

将您的命令更改为

b.manage.timeouts.implicit_wait = $BROWSER_IMPLICIT_WAIT 
+0

当我第一次读这篇文章时,我认为没有办法解决这个问题。我用于Chrome的确切线路适用于FF。但我决定无论如何测试它。事实证明,我会修复FF来删除驱动程序部分(btwn b和.manage)。所以瞧,它的工作。谢谢 –