今天,当我使用selenium webdrive时,我得到了一个错误。我的平台是mac osx。这是我的异常日志。
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路径是默认路径。谢谢你的帮助!!
发布于 2010-11-29 17:05:16
WebDriver使用端口7054 (“锁定端口”)作为互斥锁,以确保我们不会同时启动两个火狐实例。您创建的每个新实例都将在启动浏览器之前等待互斥锁,然后在浏览器打开后立即释放它。
因此,这可能确实是一个资源问题-之前创建的驱动程序需要超过45秒才能启动,并在这段时间内保持锁定。
如果在您的情况下这似乎不太可能,那么了解持有锁的进程将是一件有趣的事情。尝试在超时前的45秒内运行lsof -i TCP:7054。
使用-d运行ruby (或设置$DEBUG = true)也将为进一步的调试提供一些有用的信息。
发布于 2011-07-15 14:21:46
我执行了lsof -i TCP:7054并找到了相应的process_id,最后用kill -9 process_id终止了给定的进程
然后再次尝试测试,它确实起作用了:)
发布于 2012-02-15 09:31:47
我一直在使用cucumber + capybara + webdriver + parallel_tests,我遇到了上面提到的错误。为了解决这个问题,我在feature/support/env.rb中添加了以下内容:
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秒可能还不够。
https://stackoverflow.com/questions/4296235
复制相似问题