ホームページ > バックエンド開発 > Python チュートリアル > Chrome で QWOP ゲームを制御するときに Selenium が「NoSuchElementException」をスローするのはなぜですか?またその修正方法は何ですか?

Chrome で QWOP ゲームを制御するときに Selenium が「NoSuchElementException」をスローするのはなぜですか?またその修正方法は何ですか?

DDD
リリース: 2024-12-28 03:12:10
オリジナル
923 人が閲覧しました

Why Does Selenium Throw a

Chrome 使用時の Selenium "NoSuchElementException"

Chrome で Selenium を使用して QWOP ゲームをプレイすると、「selenium.common」が発生することがあります。 .例外.NoSuchElementException」エラー。これは通常、Selenium が指定されたロケーターを使用して指定された要素を見つけられない場合に発生します。

NoSuchElementException の理由

  • ロケーター戦略が無効または間違っています
  • 要素がブラウザのビューポート内にありません
  • 要素が非表示になっているか、表示属性が「none」に設定されています
  • 一意でないロケーター戦略により、非表示または非表示の要素が検索されます
  • 要素は iframe 内に配置されます
  • WebDriver が試行しています要素の前に要素を見つけますpresent/visible

解決策

  • 有効かつ一意のロケーター戦略を使用します。ブラウザの開発者ツールを使用して要素を検査します。
  • execute_script() メソッドを使用して要素を表示にスクロールします。
  • 要素が非表示の場合は、execute_script() を使用して表示属性を削除します。
  • 要素が iframe 内にネストされている場合は、適切な iframe に切り替えます。
  • WebDriverWait を使用して待機します。

この使用例

提供されたコードでは、「selenium.common.Exceptions. NoSuchElementException」は、ID ロケーター (「window1」) がキャンバス要素を一意に識別しないために発生します。これを解決するには、次の変更コードを使用します。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

browser = webdriver.Chrome()
browser.set_window_size(640, 480)
browser.get('http://www.foddy.net/Athletics.html?webgl=true')
browser.implicitly_wait(10)

canvas = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//canvas[@id='window1']")))
canvas.click()

while (True):
    action = ActionChains(browser)
    action.move_to_element(canvas).perform()
    canvas.click()
    canvas.send_keys("q")
ログイン後にコピー

この変更により、Selenium はキャンバスと対話する前に、キャンバスがクリック可能になるまで待機するようになります。

以上がChrome で QWOP ゲームを制御するときに Selenium が「NoSuchElementException」をスローするのはなぜですか?またその修正方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート