簡體   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