2

我可以在 windows 和 linux 上使用 chrome 运行量角器,但是一旦我进入 IE(通过 saucelabs 的任何版本),我就会收到错误。我正在使用最新的量角器。

Stacktrace:
  Error: Error while running testForAngular: JavaScript error in async script. (WARNING:      The server did not provide any stacktrace information)
Command duration or timeout: 34 milliseconds
Build info: version: '2.30.0', revision: 'dc1ef9c', time: '2013-02-19 00:15:27'
System info: os.name: 'Windows Server 2008 R2', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_35'
Session ID: c0f07d15-af3d-45d4-8248-323bf104620b
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, elementScrollBehavior=0, javascriptEnabled=true, enablePersistentHover=true, ignoreZoomSetting=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=dismiss, version=10, cssSelectorsEnabled=true, ignoreProtectedModeSettings=false, requireWindowFocus=false, allowAsynchronousJavaScript=false, handlesAlerts=true, initialBrowserUrl=, nativeEvents=true, takesScreenshot=true}]
at Error (<anonymous>)
at node_modules/selenium-webdriver/lib/webdriver/promise.js:1311:15
at node_modules/selenium-webdriver/lib/webdriver/promise.js:1460:7
at node_modules/selenium-webdriver/lib/goog/base.js:1178:15
at webdriver.promise.ControlFlow.runInNewFrame_ (node_modules/selenium-webdriver/lib/webdriver/promise.js:1438:20)
at notify (node_modules/selenium-webdriver/lib/webdriver/promise.js:328:12)
at notifyAll (node_modules/selenium-webdriver/lib/webdriver/promise.js:297:7)
at reject [as errback] (node_modules/selenium-webdriver/lib/webdriver/promise.js:423:7)
at reject (node_modules/selenium-webdriver/lib/webdriver/promise.js:1624:5)
at webdriver.promise.ControlFlow.abortFrame_ (node_modules/selenium-webdriver/lib/webdriver/promise.js:1397:9)
==== async task ====
WebDriver.executeScript()
at webdriver.WebDriver.schedule (node_modules/selenium-webdriver/lib/webdriver/webdriver.js:266:15)
at webdriver.WebDriver.executeAsyncScript (node_modules/selenium-webdriver/lib/webdriver/webdriver.js:506:15)
at /Users/kmunns/Dev/steepandcheap-www/node_modules/protractor/lib/protractor.js:528:21
at /Users/kmunns/Dev/steepandcheap-www/node_modules/selenium-webdriver/lib/goog/base.js:1178:15
at webdriver.promise.ControlFlow.runInNewFrame_ (node_modules/selenium-webdriver/lib/webdriver/promise.js:1438:20)
at notify (node_modules/selenium-webdriver/lib/webdriver/promise.js:328:12)
at notifyAll (node_modules/selenium-webdriver/lib/webdriver/promise.js:297:7)
at reject (node_modules/selenium-webdriver/lib/webdriver/promise.js:423:7)
at webdriver.promise.ControlFlow.runInNewFrame_ (node_modules/selenium-webdriver/lib/webdriver/promise.js:1464:5)
==== async task ====
at null.<anonymous> (node_modules/protractor/jasminewd/index.js:53:12)
at null.<anonymous> (node_modules/protractor/node_modules/minijasminenode/lib/async-callback.js:45:37)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
4

1 回答 1

1

这是一个影响 Protractor 0.17/0.18 之前版本的错误。核心问题是 browser.get 没有明确使用浏览器导航功能;它是一个包装函数,它使用 JS 更改位置,然后将信息加载到 DOM 中。

不幸的是,对于某些配置(SauceLabs 上的 IE、PhantomJS)来说,超时太低了,结果就是“异步加载”消息出现了这个问题。解决方案是向 browser.get 添加重试并延长超时。

TL;DR:升级到0.18.1(最新,截至本文),您应该一切顺利!

相关变更日志条目:

v0.18

(10aec0f) 修复(页面加载):增加等待超时

在 Sauce Labs 上测试 IE 时,300 毫秒的等待导致了问题。好像太短了 “browser.get()”总是超时。增加它解决了我们的问题。

v0.17

(a0bd84b) 修复(页面加载):在 protractor.get() 期间添加等待以解决卸载问题

一些系统在开始异步脚本执行之前不会等待浏览器卸载事件完成。

关闭 #406。关闭#85。

于 2014-02-08T21:21:34.143 回答