【问题标题】:Watir Webdriver(0.9.1) No Longer Opens an Instance of FirefoxWatir Webdriver(0.9.1) 不再打开 Firefox 实例
【发布时间】:2016-06-30 14:56:39
【问题描述】:

在使用 Watir Webdriver v0.9.1 for rails(以及 Selenium Webdriver 2.53.1)时,Firefox 在打开时

  browser = Watir::Browser.new :firefox

被调用。然而,现在它在这条线上失败了

unable to bind to locking port 7054 within 45 seconds
    @ /Users/andmcadams/.rvm/gems/ruby-2.0.0-p648/gems/selenium-webdriver-2.53.1/lib/selenium/webdriver/common/socket_lock.rb:59:in `lock'
      /Users/andmcadams/.rvm/gems/ruby-2.0.0-p648/gems/selenium-webdriver-2.53.1/lib/selenium/webdriver/common/socket_lock.rb:40:in `locked'
      /Users/andmcadams/.rvm/gems/ruby-2.0.0-p648/gems/selenium-webdriver-2.53.1/lib/selenium/webdriver/firefox/launcher.rb:51:in `launch'
      /Users/andmcadams/.rvm/gems/ruby-2.0.0-p648/gems/selenium-webdriver-2.53.1/lib/selenium/webdriver/firefox/bridge.rb:43:in `initialize'
      /Users/andmcadams/.rvm/gems/ruby-2.0.0-p648/gems/selenium-webdriver-2.53.1/lib/selenium/webdriver/common/driver.rb:53:in `new'
      /Users/andmcadams/.rvm/gems/ruby-2.0.0-p648/gems/selenium-webdriver-2.53.1/lib/selenium/webdriver/common/driver.rb:53:in `for'
      /Users/andmcadams/.rvm/gems/ruby-2.0.0-p648/gems/selenium-webdriver-2.53.1/lib/selenium/webdriver.rb:84:in `for'
      /Users/andmcadams/.rvm/gems/ruby-2.0.0-p648/gems/watir-webdriver-0.9.1/lib/watir-webdriver/browser.rb:46:in `initialize'
      test/integration/like_fanpage_task_test.rb:40:in `new'
      test/integration/like_fanpage_task_test.rb:40:in `block (2 levels) in <class:LikeFanpageTaskTest>'

这似乎是随机的,因为我没有更改其工作形式的代码,而该行是调用的第一行。我有 Firefox 37.0.2,它更早工作。我尝试重新启动计算机,杀死与 ruby​​ 和 Firefox 相关的进程并重新启动它们,然后重新安装 Firefox,但无济于事。

【问题讨论】:

  • 好像你有 FF 实例但没有可见窗口。因此,关闭所有 Firefox 实例并检查它们是否没有运行使用 ps aux | grep firefox 命令。如果您看到其他 firefox 实例,请杀死它们或重新启动 comp。
  • 每当我尝试使用 sudo kill -9 PID 终止进程时,它仍然会在使用 ps aux | grep firefox 时出现,但 PID 比上次大 2 并且 Watir 仍然不会打开 Firefox。
  • > 在使用 Watir Webdriver v0.9.1 时,您的堆栈跟踪显示您正在运行 watir-webdriver-0.6.2 从那时起已经进行了很多更改。
  • 很好,我正在使用 0.6.2 对其进行测试,以确保我没有意外升级但忘记将其更改回来。我的帖子现在显示 Watir 0.9.1 的错误
  • 嗯,Firefox 的默认端口是 7055,所以我不确定 Selenium 代码是如何得到 7054 的:port += 1 until free? port。设置 $DEBUG = true 并在标准输出中添加要点。

标签: ruby-on-rails firefox selenium-webdriver watir-webdriver


【解决方案1】:

Mozilla 引入了一个新的 webdriver,由于 firefox 47 中的一个错误,只有新的 webdriver 适用于 firefox。但是,我建议以任何一种方式永久切换到新的 webdriver,因为从 Firefox 48 起将完全放弃支持。

您可以通过以下方式在 ruby​​ 中使用新的 webdriver:

driver = Selenium::WebDriver.for :firefox, marionette: true

但我不知道这是否会让你也能在 watir 中使用它。

据我所知,木偶(新驱动程序)支持尚未在 watir 完成(我可能是错的),我看到 this 拉取请求正在处理它,但它没有完成或合并。

在我看来你可以做到:

browser = Watir::Browser.new :marionette

当 watir 项目完成集成新驱动程序时。

【讨论】:

  • 我之前错过了这个讨论。目前将 Marionette 与 Watir 一起使用的正确方法是 Watir::Browser.new :firefox, marionette: true。当 Selenium 3.0 发布并且 Watir 更新以需要它时,Marionette 将成为默认选项。该拉取请求与 Watir 如何支持 Marionette 无关。 Watir 目前对它的支持程度与 Selenium 的支持程度相同。由于 Watir 依赖的许多命令尚未在 Marionette 中实现,因此会缺少功能。
  • 还值得注意的是,更新到 Firefox 47.0.1 并使用 selenium-webdriver gem 2.53.4 修复了这个特定问题,而无需使用 Marionette。
【解决方案2】:

请使用最新的 webdriver selenium-webdriver.2.5.4 它在 seleniumhq 上尚不可用,但请搜索它。

【讨论】:

  • 不知道为什么这被否决了,因为它基本上是正确的。您需要 selenium-webdriver gem 2.53.4(评论者错过了 3),以便您的测试与 Firefox 47.0.1 一起使用
猜你喜欢
  • 2017-01-04
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多