私の会社の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はまだ機能しているようです
他の人が述べたように、「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',
誰かがwebdriver-managerでこれを修正したようですが、まだリリースされていません。私は同じ問題を抱えていて、この差分をnode_modulesのローカルバージョンのwebdriver-managerに適用することで修正できました: https://github.com/angular/webdriver-manager/pull/413/commits/ 6a95aa4187825d1293bda7c802f39257699095fc
次に、Webドライバーを更新すると最新バージョンがダウンロードされ、すべてが機能しました。
私も同じ問題に直面しています。
私の調査によると、これは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
}
}
残念ながら、このソリューションは私にはうまくいきません。これは一時的な解決策として試すことができます。