首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >selenium webdriver异常

selenium webdriver异常
EN

Stack Overflow用户
提问于 2010-11-28 17:52:02
回答 5查看 9.2K关注 0票数 14

今天,当我使用selenium webdrive时,我得到了一个错误。我的平台是mac osx。这是我的异常日志。

代码语言:javascript
复制
ruby-1.9.2-p0 > Selenium::WebDriver.for :firefox
Selenium::WebDriver::Error::WebDriverError: unable to bind to locking port 7054 within 45 seconds
 from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/firefox/socket_lock.rb:48:in `lock'
 from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/firefox/socket_lock.rb:29:in `locked'
 from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/firefox/launcher.rb:32:in `launch'
 from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/firefox/bridge.rb:21:in `initialize'
 from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/common/driver.rb:38:in `new'
 from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver/common/driver.rb:38:in `for'
 from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/selenium-webdriver-0.1.0/lib/selenium/webdriver.rb:51:in `for'
 from (irb):8
 from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands/console.rb:44:in `start'
 from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands/console.rb:8:in `start'
 from /Users/Apple/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.1/lib/rails/commands.rb:23:in `<top (required)>'
 from script/rails:6:in `require'
 from script/rails:6:in `<main>'

我不知道为什么会发生这种情况。我的firefox路径是默认路径。谢谢你的帮助!!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-29 17:05:16

WebDriver使用端口7054 (“锁定端口”)作为互斥锁,以确保我们不会同时启动两个火狐实例。您创建的每个新实例都将在启动浏览器之前等待互斥锁,然后在浏览器打开后立即释放它。

因此,这可能确实是一个资源问题-之前创建的驱动程序需要超过45秒才能启动,并在这段时间内保持锁定。

如果在您的情况下这似乎不太可能,那么了解持有锁的进程将是一件有趣的事情。尝试在超时前的45秒内运行lsof -i TCP:7054

使用-d运行ruby (或设置$DEBUG = true)也将为进一步的调试提供一些有用的信息。

票数 20
EN

Stack Overflow用户

发布于 2011-07-15 14:21:46

我执行了lsof -i TCP:7054并找到了相应的process_id,最后用kill -9 process_id终止了给定的进程

然后再次尝试测试,它确实起作用了:)

票数 6
EN

Stack Overflow用户

发布于 2012-02-15 09:31:47

我一直在使用cucumber + capybara + webdriver + parallel_tests,我遇到了上面提到的错误。为了解决这个问题,我在feature/support/env.rb中添加了以下内容:

代码语言:javascript
复制
unless (env_no = ENV['TEST_ENV_NUMBER'].to_i).zero?
  # Standard, which is described at the parallel_tests github page
  Capybara.server_port = 8888 + env_no

  # This successfully avoids locking port error, may require less, but
  # on my 8 cores vm, this works like a charm
  sleep env_no * 10
end

你可能需要调整上面的设置来适应你的使用,这个想法只是强制睡眠时间,以避免在大约同一时间启动所有firefox实例,其中等待45秒可能还不够。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4296235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档