Heim > Backend-Entwicklung > Python-Tutorial > Warum löst Selenium bei der Steuerung des QWOP-Spiels in Chrome eine „NoSuchElementException' aus und wie kann das Problem behoben werden?

Warum löst Selenium bei der Steuerung des QWOP-Spiels in Chrome eine „NoSuchElementException' aus und wie kann das Problem behoben werden?

DDD
Freigeben: 2024-12-28 03:12:10
Original
920 Leute haben es durchsucht

Why Does Selenium Throw a

Selenium „NoSuchElementException“ bei Verwendung von Chrome

Wenn Sie Selenium auf Chrome zum Spielen des QWOP-Spiels verwenden, stoßen Sie möglicherweise auf die Fehlermeldung „selenium.common .Exceptions.NoSuchElementException“-Fehler. Dies tritt im Allgemeinen auf, wenn Selenium das angegebene Element mit dem angegebenen Locator nicht finden kann.

Gründe für NoSuchElementException

  • Ungültige oder falsche Locator-Strategie
  • Das Element befindet sich nicht im Ansichtsfenster des Browsers.
  • Das Element ist ausgeblendet oder das Anzeigeattribut ist auf eingestellt „none“
  • Eine nicht eindeutige Locator-Strategie führt zum Auffinden eines versteckten oder unsichtbaren Elements
  • Element wird in einem Iframe platziert
  • WebDriver versucht, das Element zu finden, bevor es es ist vorhanden/sichtbar

Lösung

  • Verwenden Sie eine gültige und eindeutige Locator-Strategie. Überprüfen Sie das Element mit den Entwicklertools des Browsers.
  • Scrollen Sie das Element mit der Methodeexecute_script() in die Ansicht.
  • Wenn das Element ausgeblendet ist, entfernen Sie das Anzeigeattribut mitexecute_script().
  • Wechseln Sie zum entsprechenden Iframe, wenn das Element in einem verschachtelt ist.
  • Verwenden Sie WebDriverWait, um auf das Element zu warten vorhanden, sichtbar oder anklickbar, bevor interagiert wird.

Dieser Anwendungsfall

Im bereitgestellten Code tritt die „selenium.common.Exceptions.NoSuchElementException“ auf, weil die Der ID-Locator („window1“) identifiziert das Canvas-Element nicht eindeutig. Um dieses Problem zu beheben, verwenden Sie den folgenden geänderten Code:

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")
Nach dem Login kopieren

Diese Änderung stellt sicher, dass Selenium wartet, bis die Leinwand anklickbar ist, bevor versucht wird, mit ihr zu interagieren.

Das obige ist der detaillierte Inhalt vonWarum löst Selenium bei der Steuerung des QWOP-Spiels in Chrome eine „NoSuchElementException' aus und wie kann das Problem behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage