我无法找到在html源页面内的Id元素Selenium

问题描述:

我想在website上点击一个按钮('Todas')获取一个列表。所述Todas按钮的ID 在浏览器的HTML源和我的Python代码是:我无法找到在html源页面内的Id元素Selenium

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异常:无法找到元素: { “方法”: “ID”, “选择”: “ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_btnTodas”}

实际上,元件存在于浏览器的HTML

https

我读了相关的主题,但我没有得到解决。

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

非常感谢!

原因是因为此页正在使用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") 
+0

您的解决方案工作得很好。 TKS! –

+0

没问题,请标记为已回答。谢谢 –

正如我看到你提供websiteTODAS按钮是一个iframe内部ID为bvmf_iframe,你需要下面找到这个按钮之前,可以切换框架: -

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")