web-dev-qa-db-ja.com

Chromedriver 76がテストスイート「javascriptエラー:循環参照」を壊します

私の会社のWebアプリケーションの任意の要素をクリックしようとすると、「javascriptエラー:循環参照(セッション情報:chrome = 76.0.3809.100)」が発生します。

これは、以前のChromedriverバージョンで正常に動作していたコードです

私は here にリンクされた「重複」の質問で言及されている解決策を試しましたが、正直に言うと、質問に誤って重複のマークが付けられたと思います。

分度器:バージョン6.0.0(5.4.2でも試した)

webdriver-manager:グローバルにインストールされたバージョン12.1.6を使用

Seleniumサーバーのバージョン: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);
    }
}

catchブロックがキャッチします。

"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はまだ機能しているようです

3
JamesHennigan

他の人が述べたように、「webdriver-manager」にはv76.0.0の最新ビルドをダウンロードできないという問題があります。 webdriver-manager update --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

しかし、ここでの注意点の1つは、分度器が常にwebdriver-managerの更新に伴うデフォルトのchromedriverを指しているため、パッケージだけを追加するだけでは不十分です。このシナリオに対処するには、設定ファイルに値を追加する必要があります。これらの値で設定ファイルを介してchromedriver参照パスを上書きします

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

誰かがwebdriver-managerでこれを修正したようですが、まだリリースされていません。私は同じ問題を抱えていて、この差分をnode_modulesのローカルバージョンのwebdriver-managerに適用することで修正できました: https://github.com/angular/webdriver-manager/pull/413/commits/ 6a95aa4187825d1293bda7c802f39257699095fc

次に、Webドライバーを更新すると最新バージョンがダウンロードされ、すべてが機能しました。

0
anjhinz

私も同じ問題に直面しています。

私の調査によると、これは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
  }
}

残念ながら、このソリューションは私にはうまくいきません。これは一時的な解決策として試すことができます。

0
Sudharsan G