我无法找到在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
我读了相关的主题,但我没有得到解决。
那么,我需要做什么才能点击该按钮并获取数据列表后?
非常感谢!
答
原因是因为此页正在使用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")
答
正如我看到你提供website这TODAS
按钮是一个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")
您的解决方案工作得很好。 TKS! –
没问题,请标记为已回答。谢谢 –