ホームページ >バックエンド開発 >Python チュートリアル >Selenium WebDriverWait が新しく開いたウィンドウで要素を見つけられないのはなぜですか?
WebDriverWait が予測どおりに機能しない
Web ページからデータを抽出するために Selenium を利用しています。このページには、列を選択するウィンドウを起動する「custom_cols」ボタンが含まれています。この新しいウィンドウの読み込みには数秒 (具体的には約 5 秒) かかることがあります。
この遅延に対処するために、20 秒の遅延を持つ WebDriverWait を採用しました。奇妙なことに、要素が画面上に表示されているにもかかわらず、新しいウィンドウ内で要素の検索に失敗することがあります。この問題は、およそ 10 回の試行に 1 回発生します。
興味深いことに、コード内の他の場所で WebDriverWait を使用すると、期待どおりに機能し、要素をクリックする前に要素が表示されるようになります。
クエリは、新しい要素内の要素がなぜ存在するのかを中心に展開しています。ウィンドウの可視性を検出するために WebDriverWait を使用しているにもかかわらず、ウィンドウが可視であると認識されません。
提案解決策:
この問題は、要素をクリックしようとするときに、element_to_be_clickable() メソッドではなく WebDriverWait の present_of_element_located() メソッドを使用していることが原因で発生します。
これを解決するには、以下を置き換えますline:
myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath)))
with:
myElem = WebDriverWait(self.browser, delay).until(EC.element_to_be_clickable((By.XPATH , xpath)))
WebDriverWait メソッドの理解:
以下では、前述の 3 つのメソッドについてさらに詳しく説明します。メソッド:
以上がSelenium WebDriverWait が新しく開いたウィンドウで要素を見つけられないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。