> 백엔드 개발 > 파이썬 튜토리얼 > Chrome에서 QWOP 게임을 제어할 때 Selenium이 'NoSuchElementException'을 발생시키는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Chrome에서 QWOP 게임을 제어할 때 Selenium이 'NoSuchElementException'을 발생시키는 이유는 무엇이며 어떻게 해결할 수 있습니까?

DDD
풀어 주다: 2024-12-28 03:12:10
원래의
924명이 탐색했습니다.

Why Does Selenium Throw a

Chrome 사용 시 Selenium "NoSuchElementException"

Chrome에서 Selenium을 사용하여 QWOP 게임을 플레이할 때 "selenium.common"이 발생할 수 있습니다. .Exceptions.NoSuchElementException" 오류. 이는 일반적으로 Selenium이 주어진 로케이터를 사용하여 지정된 요소를 찾을 수 없을 때 발생합니다.

NoSuchElementException에 대한 이유

  • 잘못되거나 잘못된 로케이터 전략
  • 요소가 브라우저의 뷰포트 내에 없습니다.
  • 요소는 다음과 같습니다. 숨겨져 있거나 표시 속성이 "없음"으로 설정되어 있습니다
  • 고유하지 않은 로케이터 전략으로 인해 숨겨진 요소나 보이지 않는 요소를 찾습니다.
  • 요소가 iframe 내에 배치됩니다
  • WebDriver는 요소가 발견되기 전에 요소를 찾으려고 시도하는 중 현재/가시적

솔루션

  • 유효하고 고유한 로케이터 전략을 사용하세요. 브라우저의 개발자 도구를 사용하여 요소를 검사합니다.
  • execute_script() 메서드를 사용하여 요소를 보기로 스크롤합니다.
  • 요소가 숨겨져 있으면 Execution_script()를 사용하여 표시 속성을 제거합니다.
  • 요소가 iframe 내에 중첩된 경우 적절한 iframe으로 전환하세요.
  • WebDriverWait 사용 상호작용하기 전에 요소가 존재하거나 표시되거나 클릭 가능해질 때까지 기다립니다.

이 사용 사례

제공된 코드에서 "selenium.common. 예외.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿