我正在尝试检索要单击的元素。这是带有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:”也不存在。我该如何处理?
答案 0 :(得分:1)
这应该有效:
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
,否则,
标识将不起作用。xpath
在脚本中定义变量始终是排除问题的好方法
您的xpath
定义,作为NoSuchElementException
错误的原因(在您的情况下,xpath
是正确的)WebdriverWait
来完全加载搜索区域/ iframe