щелчок по выбранному элементу в python selenium не работает с помощью WebDriverWait / EC / путем - PullRequest
0 голосов
/ 27 мая 2018

Это документ, на который я подписан http://selenium -python.readthedocs.io / waits.html

Это исключение:

driver = webdriver.Chrome(CHROME_DRIVER_PATH)
iframe_xpath = "//*[@id='targetForCaptcha1']/div/div/iframe"
captcha_iframe = driver.find_element_by_xpath(iframe_xpath)

driver.switch_to_frame(captcha_iframe)
checkBox = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, iframe_xpath)))
checkBox.click()
raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:

Однако это работает:

driver = webdriver.Chrome(CHROME_DRIVER_PATH)
iframe_xpath = "//*[@id='targetForCaptcha1']/div/div/iframe"
captcha_iframe = driver.find_element_by_xpath(iframe_xpath)

action=ActionChains(driver)
action.move_to_element(captcha_iframe)
action.click().perform()

Вышеупомянутые два являются независимыми сеансами, запускающими скрипт Python с нуля.

Почему первый не работает, который, кажется, работаетболее стандартный способ сделать это?

1 Ответ

0 голосов
/ 27 мая 2018

Iframe является узлом основного DOM.После вызова driver.switch_to_frame(captcha_iframe) вы переключились на DOM iframes, и узел, расположенный с помощью By.XPATH, iframe_xpath, больше не доступен.

Таким образом, он все еще должен быть доступен из основного DOM, если пропустить driver.switch_to_frame(captcha_iframe) line

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...