Chromedriver 78で発生する可能性のある問題、SeleniumがChromeで開かれたPDFのWeb要素を見つけられない


17

私のGoogle Chromeがバージョン78に更新されない限り、私のコードは問題なく動作しました。また、chromedriverをバージョン78.0.3904.70に更新しました。したがって、Selenium WebDriverとJavaを使用してid = 'plugin'のWebElementを見つけることができなくなりました。

<html>
<div id="content">
<embed id="plugin" type="application/x-google-chrome-pdf" src="http://??????????/offer_printed.php?printable=yes&amp;reanudar=&amp;>
</div>
</html>

その部分以外は、私のテストは問題なく機能しています。以前に同様の問題が発生したことはありません。WebElement id = 'content'も見つけようとしましたが、同じエラーが発生します。

WebDriverWait wait = new WebDriverWait (driver, 90);
WebElement scrollvalid = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("plugin")));

scrollvalid.sendKeys(Keys.PAGE_DOWN);                       scrollvalid.sendKeys(Keys.PAGE_DOWN);

私の自動化スクリプトはPDF要素を見つけ、ページを下にスクロールする必要があります。代わりに、次のエラーが表示されます:org.openqa.selenium.TimeoutException:By.id:プラグインによって検出された要素の可視性を待機して90秒後にタイムアウトしました

誰かが同様の問題に直面していますか?前もって感謝します。


今日、Google Chromeバージョン78を削除し、バージョン76をインストールしました。自動化テストが再び機能します。すべてが完璧に動作します。バージョン78のこの問題が修正されることを願っています。だから私はchromedriver(バージョン78)を使用していて、私の.pomファイルには次の依存関係があります:<dependency> <groupId> org.seleniumhq.selenium </ groupId> <artifactId> selenium-chrome-driver </ artifactId> <version> 3.141.59 </ version> </ dependency>
混合

同じ問題が発生しています。以前は機能していたコードが失敗します。これは、Webドライバーが、探しているWeb要素を見つけられないためです。暗黙的待機と明示的待機は同じように失敗します。私が正確に特定できなかったのは、問題が発生している要素のタイプ、またはそれがiframe内にあるコンポーネントだけであるかどうかです。回避策として、Thread.sleepこの更新の前に暗黙的または明示的な待機があった場所を追加しています。
hfontanez

Chrome78とchromedriver 77は私にとってはうまくいきます。
ユン

回答:


5

同じ問題に遭遇しました。

どうやらChromeは自動的に更新されます。昨日(19年10月29日)ChromeDriverがChrome 78と互換性がないと不満を感じ始めました。ドライバを78バージョンに更新しました。そこにあることを確認した要素を見つけようとすると、ランダムなorg.openqa.selenium.NoSuchElementException例外が発生し始めました。findElement [s]は、ブレークポイントを使用した場合にも機能します。私は暗黙の待機も試みましたが、成功は限られていました。

私はzsbappaのChromeOptionソリューションを試しましたが、喜びはありませんでした。

Googleは古いバージョンのChromeを入手することを難しくしていますが、バージョン76はhttps://www.neowin.net/news/google-chrome-76-offline-installer/で見つけました。オンラインインストーラは最新バージョンをインストールすることに注意してください。私は76のドライバーに戻しましたが、すべて順調です。すべての私のSeleniumテストが再び機能しています。

私の結論は、Chrome 78とそれに関連するドライバーは、Seleniumが完了する前にWebページに問い合わせを試みる競合状態にあるということです。


ChromeDriver開発者と一緒に問題3198を開きました。
wdtj

1
私の問題に対する次の応答を受け取りました:この問題を報告していただきありがとうございます。バージョン77以降、Chromedriverは、新しいページに移動したり、ウィンドウを切り替えたりしても、フレームやiframeが読み込まれるのを待ちません。これにより、リソースが利用可能になるまでコード待機が必要になります。ほとんどのバインディングには、明示的な待機と暗黙的な待機設定があります。詳細については、SeleniumのドキュメントでWebDriverWaitを検索してください。
wdtj

しかし、私たちは明示的な待機を使用しており、それは役に立ちません。iframeの変更には役立ちますが、埋め込みPDFのHTMLタグは表示されなくなります。
ミックス

chromedriverグループで新しい問題を開きました:bugs.chromium.org/p/chromedriver/issues/detail?id
Mix

Chromiumをテストに使用できます。これは、GoogleサービスのないChromeの基本バージョンであり、それ自体は更新されず、Chromedriverで正常に動作します:chromium.org/getting-involved/download-chromium
Blaise

3

Chrome 78.0.3904.7、Chromedriver 77/78、Python Selenium 3.141.0でも同様の問題が発生しています。

自動化されたPython Seleniumテストでは、要素のクリックが発生していないように見える複数のエラーが発生しました。さらに奇妙なことに、要素がアクティブになっているように見えますが(クリックされようとしているように)、実際のクリックイベントは発生していません。その結果、ページの切り替えなどが発生せず、さまざまなダウンストリーム障害が発生します。

試行錯誤のプロセスにより、標準の.click()関数の使用は信頼できないことがわかりました。

webdriver_element.click()

しかし、アクションチェーンの使用は信頼できるようです。

ActionChains(context.browser).click(webdriver_element).perform()

これが事実である理由は明らかではありません。Chrome 78.0.3904.7にアップグレードするとすぐに障害が発生しました。私たちはChromedriver 77.0.3865.90を使用していますが、同じテストがChrome 77.xバージョンで確実に合格しているため、Chrome 78で問題が発生しているか、変更されています。


これは私にかなり役立ちました、ありがとう。
ピエドーネ

1

次の引数を追加することで、問題を解決しました。

   ChromeOptions options = new ChromeOptions();
    options.addArguments("--disable-gpu");
    options.addArguments("--disable-extensions");
    options.setExperimentalOption("useAutomationExtension", false);
    options.addArguments("--window-size=1920,1080");
    options.merge(seleniumCapabilities);
    driver = new ChromeDriver(options);

こんにちは@zsbappa!お返事ありがとうございます。しかし、これは私の問題を解決しません。問題は、chromedriver(バージョン78)が埋め込みPDF内のWeb要素を見つけられないことです。この機能は、Google Chromeがバージョン78に更新されなくなるまでは問題なく機能しました。PSテストをヘッドレスモードで実行していません
Mix

これらのオプションがOPの問題をどのように解決するかは明確ではありません。
Cal Corbin

これは問題を解決しません。ほとんどの場合、Web要素がiframe内に配置されていないシナリオを実行しています。
hfontanez

1

iframe内のタブにアクセスしようとすると、同じ問題に直面しましたが、以前はバージョン76で正常に機能していました。それ自体が78に更新されたため、失敗しました。待機、暗黙の待機、スリープ、xpath、CSS、IDを使用した要素の特定、コンテキストの切り替え、ビューまでのスクロールなどを試しましたが、うまくいきませんでした。私はWindows 10、1809を使用しています。他のOSでこれが発生しているかどうかはわかりません。

ここに私が提起した質問があります:

Chromedriver 78.0.3904.70ロケーターの使用に関する問題


1

この問題は、要素がiframeに含まれている場合にのみ現れるようであることを昨日確認しました。これらの場合、iframeは正常に配置されます。ただし、ドライバーまたはWebドライバー待機オブジェクトを使用してWeb要素を見つけようとすると、NoSuchElementまたはになりTimeoutExceptionます。

私はchromedriverチームに詳細なchromeドライバーログを提供し、彼らはそれに取り組んでいます。

更新Chromedriverの問題3223から

ログは、フレームの最後のexecutionContextCreatedがFindElementがnullを返すまで完了しないことを示しています。バージョン77以降、ChromeDriverはナビゲーションを続行する前にすべてのフレームが読み込まれるのを待ちません。残念ながら、この変更により、現在のフレームが読み込まれるまで待機できませんでした。3164はすべて、現在のフレームが読み込まれるまで待機します。これにより、フレームの読み込みが停止してexecutionContextが作成されるまで、FindElementが検索を実行できなくなります。

基本的に、このバグはv.77で導入されました。v.76から.v78にアップグレードしたため、多くの人がこの問題に気づきました。Wordは、(v。79ではなく).v80の修正を対象としているということです。回避策として、Thread.sleepiframeに切り替えてからコンポーネントを見つけようとするまでの時間を使用しています。この回避策は正常に機能します。実際、アプリケーションをデバッグモードで実行するだけで、これを自分で確認できます。(ブレークポイントを使用して)実行を一時停止すると、元のコード(スリープなし)が正常に機能することがわかります。


0

例:このキーワードを使用してみてください!。

1. implicit_wait=10
2. Sleep  10

こんにちは@Narasimhamurthy GNさん、回答ありがとうございます。明示的な待機は問題ではありません。テスト全体で明示的な待機を使用しており、同様の問題に直面していません。問題は、chromedriver(バージョン78)が埋め込みPDF内のWeb要素を見つけられないことです。
ミックス

一部のテストケースでは、「geckodriver」(Firefox)を使用した場合と同じ問題に直面しました。
ナラシムマーシーGN

それ以外の場合は、別のセレンライブラリロケーターキーワードを使用してWebElementを検索します。
Narasimhamurthy GN

残念ながら、当社のWebアプリケーションのユーザーはChromeまたはInternet Explorerを使用することをお勧めします。Firefoxは何らかの理由で推奨されません。これが、Firefoxを使用してテストを自動化できない理由です。私はセレンを使用してPDF上の任意のWeb要素を見つけるために可能なすべての方法を使用しようとしましたが、それは機能しません。また、さまざまな依存関係とChromedriverを使用してみましたが、何も機能しません。
ミックス

0

chromedriverではなく、Google Chromeの問題であることが判明しました:https ://bugs.chromium.org/p/chromedriver/issues/detail?id=3211


必ずしも。チケットID 3223を参照
hfontanez

0

同じ問題がありました。

バージョン78.0でChromeを自動更新した後、自動テストスクリプトが失敗しました。そのため、chromedriverを78バージョンに更新しましたが、ドライバーはまだWeb要素を見つけることができませんでした。その後、複数のバージョンのchromedriverを試してみましたが、最後に私の問題はchromedriverバージョン2.44で解決されました

このバージョンは、https://chromedriver.storage.googleapis.com/index.html?path = 2.44 /にあります。


-1

あなたはできるNugetのパッケージマネージャは、削除クロームドライブをし、クロムを検索し、新しいバージョンのダウンロードselenium.web.driver.ChromeDriverを jsaKamotoため>>

そこにはChromeバージョン78があります。


レスポンスのおかげで、それは本当にクロームバージョン78にNoSuchElementの例外の問題に答えていない
wdtj
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.