我正在尝试检索我想点击的元素。以下是 Selenium in 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:"也不存在。我该如何处理?
这应该有效:
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
是正确的) - 在尝试查找"Departamentos"字段之前,您可能需要考虑为搜索区域/iframe 的完整加载添加
WebdriverWait