今天运行我的rspec测试,每当测试中的某个地方出现“page.execute_script”调用时,我都会收到以下错误。
Selenium::WebDriver::Error::JavascriptError:
waiting for evaluate.js load failed
# [remote server] file:///tmp/webdriver-profile20130807-3105-fpynb7/extensions/fxdriver@googlecode.com/components/driver_component.js:8360:in `r'
# [remote server] file:///tmp/webdriver-profile20130807-3105-fpynb7/extensions/fxdriver@googlecode.com/components/driver_component.js:392:in `fxdriver.Timer.prototype.runWhenTrue/g'
# [remote server] file:///tmp/webdriver-profile20130807-3105-fpynb7/extensions/fxdriver@googlecode.com/components/driver_component.js:386:in `fxdriver.Timer.prototype.setTimeout/<.notify'
上面路径的/ resources目录(而不是组件)中有一个文件evaluate.js,就像在其他机器上一样。
这是在从22更新到Firefox 23之后发生的。我还没有能够回滚确认返回22确实解决了问题,但是我相信这就改变了。
还有其他人看过这个问题吗?
运行Kubuntu 12.04,Capybara 1.1.4,selenium-webdriver gem 2.33.0
我尝试将Capybara更新为2.whatever和selenium-webdriver更新为2.34.0,没有变化。
答案 0 :(得分:85)
我在使用FF 23的Mac OS X Lion上遇到了同样的问题。
但是当我将selenium-webdriver更新为2.34.0
时,问题就消失了我在我的Gemfile中添加了gem "selenium-webdriver", "~> 2.34.0"
。
bundle update selenium-webdriver
bundle install
现在,黄瓜与硒一起工作正常。
答案 1 :(得分:4)
我已将我的宝石更新为:
gem 'capybara', '~> 2.1.0'
gem 'selenium-webdriver', '~> 2.35.1'
这对我有用。
<强>更新强>
Capybara 2.1.0给了我一个Phantomjs的问题,最后我使用了2.0.3版本。
答案 2 :(得分:1)
我跑了下面,它运作了:
gem install selenium-webdriver -v "2.35.0"
答案 3 :(得分:0)
我最近安装了Selenium Webdriver,并且在我的一些Python测试脚本中看到了同样的问题。在进行了一些挖掘后,我能够确定execute_script
在尝试将JS返回值转换为可以进行本机评估的对象(在我的方案中使用Python)时挂起。
会挂起:
self.driver.execute_script('document.body.innerHTML="<form></form>";')
不会挂起:
self.driver.execute_script('document.body.innerHTML="<form></form>"; return true;')
你仍然可以返回更复杂的对象,我只是小心地总是明确地让JS return
得到我想要的值,或者true
如果我只需要执行脚本。
希望这有帮助。
我做了一些阅读,以解决这个问题: