Chromedriver 76打破了我的测试套件"javascript error: circular reference"



每当我尝试单击我公司 Web 应用程序上的任何元素时,我现在都会收到"javascript 错误:循环引用(会话信息:chrome=76.0.3809.100("。

这是在以前的chromedriver版本上运行良好的代码

我已经尝试了此处链接的"重复"问题中提到的解决方案,老实说,我认为该问题被错误地标记为重复。

量角器:版本 6.0.0(也在 5.4.2 上试用(

Web驱动程序管理器:使用全局安装的版本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%AppDataRoamingnpmnode_modulesprotractornode_modulesselenium-webdriverliberror.js:550:15)
at parseHttpResponse (c:Users%username%AppDataRoamingnpmnode_modulesprotractornode_modulesselenium-webdriverlibhttp.js:560:13)
at Executor.execute (c:Users%username%AppDataRoamingnpmnode_modulesprotractornode_modulesselenium-webdriverlibhttp.js:486:26)
at process._tickCallback (internal/process/next_tick.js:68:7)Error
at ElementArrayFinder.applyAction_ (c:Users%username%AppDataRoamingnpmnode_modulesprotractorbuiltelement.js:459:29)
at ElementArrayFinder.(anonymous function).args [as click] (c:Users%username%AppDataRoamingnpmnode_modulesprotractorbuiltelement.js:97:29)
at ElementFinder.(anonymous function).args [as click] (c:Users%username%AppDataRoamingnpmnode_modulesprotractorbuiltelement.js:818:22)
at UserContext.it (c:Users%username%Developmenttest-automationRepoCloudUK TaxHMRC Test Cases 2018-19hmrcTestCase001spec01.js:173:28)"

这发生在多台计算机上。

火狐似乎仍在工作

根据问题 2995:javascript 错误:使用 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

编辑

"网络驱动程序管理器"存在问题,它没有下载最新版本的 v76.0.0 .您将不得不自己安装它的问题 - 408

npm install chromedriver --chromedriver_version=LATEST

我也面临着同样的问题。

根据我的研究,这发生在ChromeDriver版本75.0.3770.8。 https://sites.google.com/a/chromium.org/chromedriver/downloads

铬驱动程序 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
}
}

不幸的是,这个解决方案对我不起作用。您可以尝试将其作为临时解决方案。

看起来有人已经在网络驱动程序管理器中修复了这个问题,但它还没有发布。我遇到了同样的问题,并且能够通过将此差异应用于我的本地版本的 webdriver-manager 来解决它 node_modules: https://github.com/angular/webdriver-manager/pull/413/commits/6a95aa4187825d1293bda7c802f39257699095fc

然后更新网络驱动程序下载了最新版本,一切正常。

正如其他人提到的,"网络驱动程序管理器"存在问题,它没有下载最新版本的 v76.0.0 . 即使您通过提供 WebDriver-Manager 更新来指定确切的版本 --versions.chrome 76.0.3809.68,但它始终指向 Chrome 76.0.3809.12。 仅更改了名称,但文件仅具有chrome 76.0.3809.12版本,我认为只有Chrome

正如拉胡尔·

快速修复:通过 npm 安装 chromedriver - v76.0.1

https://www.npmjs.com/package/chromedriver

但是这里的一个问题是量角器总是指向WebDriver管理器更新附带的默认chromedriver,因此仅添加软件包是不够的,我们必须在配置文件中添加一些值来克服这个Senario,我们必须用这些值覆盖通过配置文件的chromedriver引用路径

export.Config = {
DirectConnet:true,
chromeDriver: process.cwd()+'/node_modules/chromedriver/lib/chromedriver/chromedriver.exe',

最新更新