51

今天运行我的 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 目录(而不是 components)中有一个文件 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,没有任何变化。

4

4 回答 4

85

我在带有 FF 23 的 Mac OS X Lion 上遇到了同样的问题。

但是当我将 selenium-webdriver 更新到 2.34.0 时,问题就消失了

我添加gem "selenium-webdriver", "~> 2.34.0"到我的 Gemfile 中。

bundle update selenium-webdriver

bundle install

黄瓜现在可以很好地与硒一起使用。

于 2013-08-07T22:20:35.813 回答
4

我已将我的宝石更新为:

gem 'capybara',             '~> 2.1.0'
gem 'selenium-webdriver',   '~> 2.35.1'

这对我有用。

更新:

Capybara 2.1.0 给了我一个 Phantomjs 的问题,最后我使用了 2.0.3 版本。

于 2013-09-03T08:37:10.140 回答
1

我跑了下面,它工作:

 gem install selenium-webdriver -v "2.35.0"
于 2013-09-08T16:10:51.273 回答
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;')

你仍然可以返回更复杂的对象,我只是小心地始终明确地让 JSreturn获得我想要的值,或者true我只需要执行脚本。

希望这可以帮助。

为了弄清楚这一点,我做了一些阅读:

于 2013-08-21T15:12:19.333 回答