私のgoogle Chromeがバージョン78に更新されないまで、コードは正常に機能しました。また、chromedriverをバージョン78.0.3904.70に更新しました。そのため、id = 'pluginでWebElementを見つけることができなくなりました'Selenium WebDriverおよびJavaを使用:
<html>
<div id="content">
<embed id="plugin" type="application/x-google-chrome-pdf" src="http://??????????/offer_printed.php?printable=yes&reanudar=&>
</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:見つかった要素の表示を待機してから90秒後にタイムアウトしましたBy.id:プラグイン
誰かが同様の問題に直面していますか?前もって感謝します。
同じ問題に遭遇しました。
どうやら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ページに問い合わせを試みる競合状態にあります。
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()
これが事実である理由は明らかではありません。 Chrome78.0.3904.7。Chromedriver77.0.3865.90を使用していますが、Chrome 77。 xバージョンのため、何かが間違っているか、Chrome 78。
次の引数を追加することで、問題を解決しました。
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);
Iframe内のタブにアクセスしようとすると、同じ問題に直面しましたが、以前はバージョン76で正常に機能していました。今ではそれ自体が78に更新されており、失敗しています。待機、暗黙の待機、スリープ、xpath、CSS、IDを使用した要素の検索、コンテキストの切り替え、ビューまでのスクロールなどを試しましたが、うまくいきませんでした。私はwindows 10、1809を使用しています。これが他のOSで発生しているかどうかはわかりません。
ここに私が提起した質問があります:
この問題は、要素がiframeに含まれている場合にのみ現れるようであることを昨日確認しました。これらの場合、iframeは正常に配置されます。ただし、ドライバーまたはWebドライバー待機オブジェクトを使用してWeb要素を見つけようとすると、それぞれNoSuchElement
またはTimeoutException
になります。
Chromedriverチームに詳細なchromeドライバログを提供しました。彼らはそれに取り組んでいます。
[〜#〜] update [〜#〜]: chromedriver issue 322 から
ログは、フレームの最後のexecutionContextCreatedがFindElementがnullを返すまで完了しないことを示しています。バージョン77以降、ChromeDriverはナビゲーションを続行する前にすべてのフレームが読み込まれるのを待ちません。残念ながら、この変更により、現在のフレームが読み込まれるまで待機できませんでした。 3164はすべて、現在のフレームが読み込まれるまで待機します。これにより、FindElementは、フレームの読み込みが停止し、executionContextが作成されるまで検索を実行できなくなります。
基本的に、このバグはv.77で導入されました。 v.76から.v78にアップグレードしたため、多くの人がこの問題に気づきました。 Wordは、(v。79ではなく).v80の修正を対象としているということです。回避策として、iframeに切り替えてからコンポーネントを見つけようとするまでの間にThread.sleep
を使用しています。この回避策は正常に機能します。実際、アプリケーションをデバッグモードで実行するだけで、これを自分で確認できます。 (ブレークポイントを使用して)実行を一時停止すると、元のコード(スリープなし)が正常に機能することがわかります。
同じ問題がありました。
自動更新後Chromeバージョン78.0で、自動テストスクリプトが失敗しました。そのため、chromedriverを78バージョンに更新しましたが、ドライバーはまだWeb要素を見つけることができませんでした。その後、複数のバージョンのchromedriverを使用し、最後に私の問題はchromedriverバージョン2.44で解決されました。
このバージョンは https://chromedriver.storage.googleapis.com/index.html?path=2.44/ にあります
Chromedriverではなく、Google Chromeの問題であることが判明しました: https://bugs.chromium.org/p/chromedriver/issues/detail?id=3211
例:このキーワードを使用してみてください!。
1. implicit_wait=10
2. Sleep 10