2016-03-30 229 views
0

我試圖點擊網頁的一部分,但我收到消息「NoSuchElementException:無法找到元素」....儘管元素在那裏。Python Selenium:找不到Xpath元素

該代碼用於工作,但它看起來像頁面發生了變化..但xpath沒有改變。

我在這裏嘗試了Stackoverflow中類似問題的不同解決方案,但對於這個例子還是有些不正確。

的網址是: 「http://www.bmfbovespa.com.br/pt_br/servicos/market-data/consultas/mercado-a-vista/codigo-isin/pesquisa/

元素我真的試圖點擊 「下載德Arquivos」

我的代碼:

from selenium import webdriver 


fp = webdriver.FirefoxProfile() 
fp.set_preference("browser.download.folderList",2) 
fp.set_preference("browser.download.manager.showWhenStarting",False) 
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/msword, application/csv, application/vnd.ms-excel, application/ris, text/csv, image/png, application/pdf, text/html, text/plain, application/zip, application/x-zip, application/x-zip-compressed, application/download, application/octet-stream") 
fp.set_preference('browser.helperApps.alwaysAsk.force', False) 



driver = webdriver.Firefox(firefox_profile=fp) 
driver.get("http://www.bmfbovespa.com.br/pt_br/servicos/market-data/consultas/mercado-a-vista/codigo-isin/pesquisa/") 

### 
# Click "Download de arquivos" (the part with problem) 
### 

elem=driver.find_element_by_xpath(".//*[@id='ctl00_contentPlaceHolderConteudo_rtsDetalhe_tabDownload']/span/span") 
elem.click() 

有什麼想法?

回答

0

多種選擇這裏:

  • 定位 「的ID」 鏈接:

    driver.find_element_by_id("ctl00_contentPlaceHolderConteudo_rtsDetalhe_tabDownload") 
    
  • 通過鏈接文本通過 「與XPath」 定位:

    driver.find_element_by_xpath("//a[span/span = 'Download de Arquivos']") 
    

而且,重要的部分是元素在iframe之內 - 你需要切換到它。

工作代碼:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Firefox() 
driver.get("http://www.bmfbovespa.com.br/pt_br/servicos/market-data/consultas/mercado-a-vista/codigo-isin/pesquisa/") 

driver.switch_to.frame("bvmf_iframe") 

wait = WebDriverWait(driver, 10) 
elem = wait.until(EC.presence_of_element_located((By.ID, "ctl00_contentPlaceHolderConteudo_rtsDetalhe_tabDownload"))) 
elem.click() 
+0

我都嘗試....但我仍然得到「NoSuchElementException異常:找不到元素」的消息。 – fmarques

+0

@fmarques好的,更新,檢查出來。 – alecxe

+0

它的工作原理!非常感謝你! – fmarques