Селен не находит элемента - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь получить элемент, на который я хотел бы нажать. Вот открытие сайта с Selenium в Python:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--dns-prefetch-disable')
driver = webdriver.Chrome("./chromedriver", options=chrome_options)
website = "https://www.agronet.gov.co/estadistica/Paginas/home.aspx?cod=4"
driver.get(website)  # loads the page

Затем я ищу интересующий меня элемент:

driver.find_element_by_xpath('//*[@id="cmbDepartamentos"]')

, который поднимает NoSuchElementException ошибка. Если посмотреть на источник html (driver.page_source), действительно, "cmbDepartamentos" не существует! и текст выпадающего меню, которое я пытаюсь найти, который "Departamentos:" также не существует. Как я могу справиться с этим?

1 Ответ

1 голос
/ 21 февраля 2020

Это должно работать:

iframe=driver.find_element_by_xpath('//div[@class="iframe"]//iframe')
driver.switch_to.frame(iframe)
driver.find_element_by_xpath('//*[@id="cmbDepartamentos"]').click()

Примечания:

  • Причина ошибки NoSuchElementException заключается в том, что элемент находится внутри iframe , Если вы не переключите свой драйвер на этот iframe, идентификация не будет работать.
  • CTRL + F на панели инструментов разработчика, тогда поиск xpath, который вы определили в своем скрипте, всегда является хорошим способом исключить проблемы с вашим xpath определением, как причину ошибки NoSuchElementException (и в вашем случае xpath является правильным)
  • Возможно, вы захотите добавить WebdriverWait для полной загрузки области поиска / iframe перед попыткой найти поле «Departamentos»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...