我正在嘗試使用 Python 通過 Selenium 自動下載。我嘗試下載的網站有多個選項,每個選項都有一個 HTML HREF 和一個 Excel HREF。所以站點代碼如下所示:
</ul>
<li><a class="pnid-642 pv-pid-0 pvid-9972 cid-31"> </a>24. Option 24
<ul>
<li><table width='50%'><tr><td width='20%'> </td><td width='50%'>Select type</td><td width='15%'><A title='Html' HREF='/apps/carteras/genera_xsl_v2.0.php?param=RWJybTl4VEV4MnlHc0VSQVd5T1VKV3Q3STg4Rk5oS1RYUDdaa1dFbDhoWkwzam53L3huQzBnPT0='><span class="fa fa-file-code-o fa-2x" aria-hidden="true"'></span></a></td><td width='15%'><A title='Excel' HREF='/apps/carteras/genera_xsl2xls.php?param=RWJybTl4VEV4MnlHc0VSQVd5T1VKV3Q3STg4Rk5oS1RYUDdaa1dFbDhoWkwzam53L3huQzBnPT0='><span aria-hidden="true"></span></a></td></tr></table></li>
</ul>
<li><a > </a>25. Option 25
<ul>
<li><table width='50%'><tr><td width='20%'> </td><td width='50%'>Select type<td width='15%'><A title='Html' HREF='/apps/carteras/genera_xsl_v2.0.php?param=RWJybTl4VEV4MnlHc0VSQVd5T1VKVTBSRDZ5aVNsb2JYUDdaa1dFbDhoWkwzam53L3huQzBnPT0='><span aria-hidden="true"'></span></a></td><td width='15%'><A title='Excel' HREF='/apps/carteras/genera_xsl2xls.php?param=RWJybTl4VEV4MnlHc0VSQVd5T1VKVTBSRDZ5aVNsb2JYUDdaa1dFbDhoWkwzam53L3huQzBnPT0='><span class="fa fa-file-excel-o fa-2x" aria-hidden="true"></span></a></td></tr></table></li>
</ul>
我正在嘗試自動下載 Option 25 Excel 檔案,但正如您所見,Excel HREF 對于網站上的每個選項都是相同的。有沒有辦法可以使用 Selenium 僅下載該 Excel 檔案?
謝謝
uj5u.com熱心網友回復:
要識別第 25 個 Excel 檔案,請使用以下xpath方法進行識別。
driver.find_element(By.XPATH, "//li[contains(., '25. Option 25')]/ul/li//a[@title='Excel']").click()
如果你想讓它動態化,你可以創建一個方法并將選項文本作為引數傳遞。
def DownloadFileOptions(optionName) :
driver.find_element(By.XPATH, "//li[contains(., '{}')]/ul/li//a[@title='Excel']".format(optionName)).click()
DownloadFileOptions('25. Option 25')
DownloadFileOptions('24. Option 24')
我建議您使用 webdriverwait() 并等待元素可點擊。
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//li[contains(., '25. Option 25')]/ul/li//a[@title='Excel']"))).click()
您需要匯入以下庫。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
uj5u.com熱心網友回復:
您可以嘗試使用它包含的文本來查找元素
driver.find_elements_by_xpath("//*[contains(text(), '25. Option 25')]")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/439648.html
標籤:Python python-3.x 硒 硒铬驱动程序
上一篇:如何從終端從另一個目錄獲取模塊?
下一篇:在另一個類中檢索變數值
