繁体   English   中英

我无法在html源页面Selenium中通过ID查找元素

[英]I can't find elements by Id inside html source page Selenium

我正在尝试在网站上获取列表,单击一个按钮(“ Todas”)。 浏览器html源上Todas按钮ID和我的python代码是:

Button Id:'ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_btnTodas'

    from selenium import webdriver 
    import time

    driver = webdriver.Firefox(executable_path='') 
    driver.implicitly_wait(12)
    driver.get("http://www.bmfbovespa.com.br/pt_br/produtos/listados-a-vista-e-derivativos/renda-variavel/empresas-listadas.htm") 

    driver.find_element_by_id("ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_btnTodas")

错误信息:

NoSuchElementException:无法找到元素:{“ method”:“ id”,“ selector”:“ ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_btnTodas”}

实际上,元素存在于浏览器html中

https

我阅读了相关主题,但没有找到解决方案。

那么,我需要做些什么才能单击该按钮并在之后获取数据列表?

非常感谢!

正如我在您提供的网站中看到的那样,此TODAS按钮位于ID为bvmf_iframeiframe内,您需要先切换该框架,然后才能找到此按钮,如下所示:-

driver = webdriver.Firefox(executable_path='') 
driver.implicitly_wait(12)
driver.switch_to_frame("bvmf_iframe")
driver.get("http://www.bmfbovespa.com.br/pt_br/produtos/listados-a-vista-e-derivativos/renda-variavel/empresas-listadas.htm") 

driver.find_element_by_id("ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_btnTodas")

原因是因为此页面使用的是iFrame,所以在尝试查找元素之前,您需要先转至iframe:

iframe = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to_default_content()

driver.switch_to_frame(iframe)
driver.find_element_by_id("ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_btnTodas")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM