我无法通过html源页面Selenium中的Id找到元素

时间:2016-07-28 14:49:02

标签: python selenium web-scraping

我想点击website的列表,点击按钮(' 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:无法找到元素:   {"方法":" ID""选择器":" ctl00_contentPlaceHolderConteudo_BuscaNomeEmpresa1_btnTodas"}

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

https

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

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

非常感谢!

2 个答案:

答案 0 :(得分:0)

当我在您提供的website中看到此TODAS按钮位于ID为iframe的{​​{1}}内时,您需要在找到此内容之前切换该帧按钮如下: -

bvmf_iframe

答案 1 :(得分:0)

原因是因为此页面使用的是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")