【问题标题】:Selenium::WebDriver Wait (Ruby, Chrome)Selenium::WebDriver 等待 (Ruby, Chrome)
【发布时间】:2012-06-18 16:45:40
【问题描述】:

我有一个可以打开浏览器的 ruby​​ 脚本。如果 FF 由于某种原因失败,我将它设置为先打开 Firefox,然后再打开 Chrome - 比如 FF 得到更新而 Selenium 还没有赶上。

等待函数/定义在 FF 中运行良好,但总是会破坏 Chrome。下面是Chrome浏览器启动的相关代码:

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

我还是 Selenium 的新手,我在声明如下内容后使用了 wait.until 命令:

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

以上代码行在 Firefox 中运行良好。但是,我想用 FF 和 Chrome 运行我的脚本。有没有办法在 Chrome 和 FF 中做到这一点?

谢谢

【问题讨论】:

  • 到底是什么问题,你看到了什么错误?
  • 这是implicit_wait 命令的结果:未定义的方法`driver' for #<:webdriver::driver:0x..fb753d86c browser=":chrome"> (NoMethodError)
  • wait = ... $BROWSER_EXPLICIT_WAIT) 行似乎在我当前的开发机器上工作得很好。这很奇怪,因为我记得它特别不适用于我原来的开发机器(最近遇到了硬盘问题)。既然我不能重复它,我想我现在不会担心它。
  • 对于为什么implicit_wait 仍然会导致问题以及如何解决它有什么想法吗?

标签: google-chrome ubuntu selenium webdriver


【解决方案1】:

现在看到您提供了更容易解决的错误。

原因是 - 您已将 selenium 驱动程序实例命名为 b

但将隐式时间定义为

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

即带有b.DRIVER,因此错误消息 - undefined method 'driver' for

把你的命令改成

b.manage.timeouts.implicit_wait = $BROWSER_IMPLICIT_WAIT

【讨论】:

  • 当我第一次读到这篇文章时,我认为这不可能是答案。我对 Chrome 的确切行适用于 FF。但我还是决定测试一下。原来我已经修复了 FF 以删除驱动程序部分(btwn b. 和 .manage)。所以瞧它的工作原理。谢谢
猜你喜欢
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
相关资源
最近更新 更多