ホームページ  >  記事  >  バックエンド開発  >  Amazon の検索結果をスクロールすると、Selenium が StaleElementException をスローするのはなぜですか?

Amazon の検索結果をスクロールすると、Selenium が StaleElementException をスローするのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-15 07:02:02340ブラウズ

Why Does Selenium Throw a StaleElementException When Scrolling Through Amazon Search Results?

Selenium の StaleElementException: Python で Web ページを移動する

Selenium WebDriver を使用して Amazon の検索結果を反復処理すると、一部のユーザーが 5 番目で StaleElementException に遭遇します。または2ページ目。このエラーは、Selenium が DOM (ドキュメント オブジェクト モデル) で変更された要素、または DOM (ドキュメント オブジェクト モデル) から消えた要素と対話しようとしたときに発生します。

提供されたコード スニペットは、ページを下にスクロールしてページ番号バーを見つけるのが難しいことを強調しています。 「driver.execute_script」行で StaleElementException が発生します。 「StaleElementReferenceException」メッセージは、参照された要素 (クラス「pagnCur」) が有効でなくなったことを示します。

元のアプローチは特定のページ数を反復処理することを目的としていましたが、提供されたソリューションは継続的にタスクを簡素化します。無効になるまで「次へ」ボタンをクリックします。このアプローチは、WebDriverWait に依存して、「次へ」ボタン要素がクリック可能になるまで待機します。 WebDriverWait がタイムアウトすると (デフォルトは 10 秒)、ナビゲートするページがなくなったと想定してループが中断されます。

「implicitly_wait(10)」は、要素が存在するまで待機することに注意することが重要です。 10 秒全体ではなく、最大 10 秒までの DOM。要素が以前に見つかった場合、「implicitly_wait」タイムフレームは完了します。信頼性の高い待機を確保するには、特定の要素ロケーターで「WebDriverWait」のような明示的な待機を使用することをお勧めします。

以上がAmazon の検索結果をスクロールすると、Selenium が StaleElementException をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。