每当我尝试单击公司Web应用程序上的任何元素时,我都会收到“ javascript错误:循环引用(会话信息:chrome = 76.0.3809.100)”。
这是在以前的chromedriver版本上正常运行的代码
我尝试了链接到here的“重复”问题中提到的解决方案,说实话,我认为该问题被错误地标记为重复。
量角器:版本6.0.0(也在5.4.2上尝试过)
webdriver-manager:使用全局安装的版本12.1.6
硒服务器版本:3.141.59
节点:v10.16.2
显然是chromedriver_76.0.3809.12
我要运行的代码在这里
async function clickElemByID(strID){
await browser.sleep(15000);
var testElem = element(by.id(strID));
try {
await testElem.click();//throws "Failed: javascript error: circular reference"
} catch (e) {
console.log(e);
}
}
捕获块捕获:
"JavascriptError: javascript error: circular reference
(Session info: chrome=76.0.3809.100)
at Object.throwDecodedError (c:\Users\%username%\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:550:15)
at parseHttpResponse (c:\Users\%username%\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:560:13)
at Executor.execute (c:\Users\%username%\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\http.js:486:26)
at process._tickCallback (internal/process/next_tick.js:68:7)Error
at ElementArrayFinder.applyAction_ (c:\Users\%username%\AppData\Roaming\npm\node_modules\protractor\built\element.js:459:29)
at ElementArrayFinder.(anonymous function).args [as click] (c:\Users\%username%\AppData\Roaming\npm\node_modules\protractor\built\element.js:97:29)
at ElementFinder.(anonymous function).args [as click] (c:\Users\%username%\AppData\Roaming\npm\node_modules\protractor\built\element.js:818:22)
at UserContext.it (c:\Users\%username%\Development\test-automation\Repo\Cloud\UK Tax\HMRC Test Cases 2018-19\hmrcTestCase001\spec01.js:173:28)"
这是在多台计算机上发生的。
尽管Firefox仍然可以正常工作
答案 0 :(得分:4)
根据Issue 2995: javascript error: circular reference with ChromeDriver ,已在Chrome / ChromeDriver版本76.0.3809.68中修复。请尝试使用76.0.3809.68。
更改日志:
ChromeDriver 76.0.3809.68
Supports Chrome version 76
Includes the following changes over version 76.0.3809.25:
Fixed a bug in detecting circular reference in JavaScript objects
修改
“ webdriver-manager”存在问题,即未下载最新版本的v76.0.0。您将需要自己issue - 408
进行安装npm install chromedriver --chromedriver_version=LATEST
答案 1 :(得分:0)
我也面临着同样的问题。
根据我的研究,这发生在ChromeDriver 75.0.3770.8版中。 https://sites.google.com/a/chromium.org/chromedriver/downloads
ChromeDriver 75.0.3770.8
支持Chrome版本75
最明显的变化是ChromeDriver现在以W3C标准运行 兼容模式。
这意味着,他们已经在chrome驱动程序中启用了W3C标准。要解决此问题,需要用代码修复循环参考错误或禁用W3C。对于某些禁用,W3C使用了github问题的解决方案: https://github.com/angular/protractor/issues/5261
capabilities: {
'goog:chromeOptions': {
w3c: false
}
}
很遗憾,此解决方案不适用于我。您可以尝试将其作为临时解决方案。
答案 2 :(得分:0)
似乎有人在webdriver-manager中修复了此问题,但尚未发布。我遇到了同样的问题,并且能够通过将此差异应用于node_modules中的本地webdriver-manager版本来解决此问题: https://github.com/angular/webdriver-manager/pull/413/commits/6a95aa4187825d1293bda7c802f39257699095fc
然后更新的网络驱动程序下载了最新版本,一切正常。
答案 3 :(得分:0)
正如其他人所提到的,“ webdriver-manager”存在一个问题,即未下载最新版本的v76.0.0。即使您通过给webdriver-manager更新--versions.chrome 76.0.3809.68指定确切的版本,它始终指向chrome 76.0.3809.12。我认为只有名称已更改,但文件仅具有chrome 76.0.3809.12版本。
并且正如Rahul L
所述快速修复:通过npm安装chromedriver-v76.0.1
https://www.npmjs.com/package/chromedriver
但这里有个陷阱,量角器总是指向webdriver-manager更新随附的默认chromedriver,因此仅添加软件包是不够的,我们必须在config文件中添加一些值才能克服此问题,我们必须使用这些值覆盖配置文件中的chromedriver参考路径
export.Config = {
DirectConnet:true,
chromeDriver: process.cwd()+'/node_modules/chromedriver/lib/chromedriver/chromedriver.exe',