[英]Downloading multiple files using Selenium click()?
使用Firefox / Python / Selenium-我能夠在網頁上的文件鏈接上使用click()
進行下載,然后文件會按預期下載到“下載”文件夾中。
但是,當我在1個以上的鏈接上向click()
添加更多行時,該腳本不再按預期運行。 它們都在單獨的瀏覽器窗口中打開,而不是下載文件,這些瀏覽器窗口在腳本完成后全部關閉。
這是設計使然,還是可以解決,還是更好的在網頁上下載多個文件的方法?
這是有問題的網站: https : //www.treasury.gov/about/organizational-structure/ig/Pages/igdeskbook.aspx
我正在嘗試下載指向簡介和第1-4卷所有部分的鏈接。
我有一個關於定位器的字典:
IgDeskbookPageMap = dict(IgDeskbookBannerXpath = "//div[contains(text(), 'The Inspector General Deskbook')]",
IgDeskbookIntroId = "anch_202",
IgDeskbookVol1Part1Id = "anch_203",
IgDeskbookVol1Part2Id = "anch_204",
IgDeskbookVol1Part3Id = "anch_205",
IgDeskbookVol1Part4Id = "anch_206",
IgDeskbookVol2Id = "anch_207",
IgDeskbookVol3Id = "anch_208",
IgDeskbookVol4Part1Id = "anch_209",
IgDeskbookVol4Part2Id = "anch_210",
IgDeskbookVol4Part3Id = "anch_211"
這是方法:
def click(self, waitTime, locatorMode, Locator):
self.wait_until_element_clickable(waitTime, locatorMode, Locator).click()
這些是click()調用(有3個以上,但在此處僅被截斷以表示空間:
self.click(10,
"id",
IgDeskbookPageMap['IgDeskbookIntroId']
)
self.click(10,
"id",
IgDeskbookPageMap['IgDeskbookVol1Part1Id']
)
self.click(10,
"id",
IgDeskbookPageMap['IgDeskbookVol1Part2Id']
)
如果在不同的標簽頁中打開文件,則下載此類多個文件的方法可能是按照您自己的編碼語言執行以下算法步驟:
for( all such links) :
click() the pdf link
findElement the download element
click() the download link
close the tab
switch back to last tab //should ideally be completed with previous step
我添加了以下代碼來啟動Firefox,現在單擊每個文件時,下載行為均按預期工作:
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.helperApps.alwaysAsk.force', False)
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf,application/x-pdf')
profile.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf")
profile.set_preference("pdfjs.disabled", True)
self.driver = webdriver.Firefox(profile)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.