셀레늄에서 NoSuchElementException을 피하는 방법은 무엇입니까? [복제]
Aug 18 2020
이 모든 것을 처음 접했기 때문에 어리석은 질문이라면 사과드립니다.
여기 내가하려는 모든 것이 있습니다.
nxt_btn = driver.find_element_by_xpath('/html/body/main/article/section/form/div[2]/button')
nxt_btn.click()
time.sleep(2)
vote_check = driver.find_element_by_xpath('/html/body/main/article/section/form/div[1]/div[2]/div/div/fieldset/div/div/div[2]/div/input')
vote_check.click()
time.sleep(2)
nxt_btn = driver.find_element_by_xpath('/html/body/main/article/section/form/div[2]/button')
nxt_btn.click()
driver.quit()
그리고 다음을 반환합니다.
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/main/article/section/form/div[1]/div[2]/div/div/fieldset/div/div/div[2]/div/input"}
(Session info: chrome=84.0.4147.125)
나는 대기 시간을 변경하고, 다른 요소를 선택하고, 그것이 iframe에 있는지 확인하려고 시도했습니다. 그렇다면 경로를 올라가서 찾을 수 없습니다.
답변
1 AmrutaPande Aug 18 2020 at 12:18
수면 대신 Selenium explict waits 사용
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "XPATH"))
사용할 수있는 조건은 다음과 같습니다.
- 가시성 _ 요소 _ 위치
- text_to_be_present_in_element
- element_to_be_clickable