Chromedriver 76破坏了我的测试套件“ javascript错误:循环引用”

时间:2019-08-14 10:09:39

标签: javascript selenium-webdriver protractor webdriver selenium-chromedriver

每当我尝试单击公司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仍然可以正常工作

4 个答案:

答案 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',