1. 程式人生 > 其它 >Selenium3自動化測試【30】檔案下載

Selenium3自動化測試【30】檔案下載

引言

Selenium也提供了檔案下載的方案,以下載最新的Python版本為例,如圖所示。單擊【Download Python ..*】,下載最新的Python版本,圖所示。

1. FireFox瀏覽器

以FireFox瀏覽器為例,下載Python的最新版本。FireFox瀏覽器要實現檔案下載,需要做些設定。
對於FireFox,需要我們設定其Profile:

  • browser.download.dir:指定下載路徑;
  • browser.download.folderList:設定成 0 表示下載到桌面;設定成 1 表示下載到預設路徑;設定成 2 表示使用自定義下載路徑;
  • browser.download.manager.showWhenStarting:在開始下載時是否顯示下載管理器;
  • browser.helperApps.neverAsk.saveToDisk:對所給出檔案型別不再彈出框進行詢問。

FireFox需要針對每種檔案型別進行設定,這裡需要我們查詢對應檔案的MIME型別,下載Python的最新版本,下載的檔案型別為exe,因此型別為'application/octet-stream'。

常見檔案的MIME型別,如表所示。

更多對應檔案的MIME型別,可以訪問《MIME 參考手冊》:
https://www.w3school.com.cn/media/media_mimeref.asp進行檢視
通過FireFox瀏覽器,實現下載檔案程式碼如下:

from selenium import webdriver
from time import sleep

profile = webdriver.FirefoxProfile()
# 設定成 2 表示使用自定義下載路徑;設定成 0 表示下載到桌面;設定成 1 表示下載到預設路徑
profile.set_preference("browser.download.folderList", 2)
#在開始下載時是否顯示下載管理器
profile.set_preference("browser.download.manager.showWhenStarting", False)
# 設定預設的儲存資料夾
profile.set_preference("browser.download.dir", r"D:\Demo") 
# 設定自動儲存的檔案型別,如果FireFox不能自動儲存,一定是檔案型別不對
# 對所給出檔案型別,不再彈出框進行詢問
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", 'application/octet-stream')

driver = webdriver.Firefox(FireFox_profile=profile)
driver.implicitly_wait(10)
# 訪問Python下載頁,下載最新版本的Python
driver.get('https://www.python.org/downloads/')
driver.maximize_window()
sleep(2)
# 單擊【Download the latest version for Windows】按鈕。
driver.find_element_by_xpath('//*[@id="touchnav-wrapper"]/header/div/div[2]/div/div[3]/p/a').click()

程式碼執行結束後,等待一段時間,可以在D盤Demo資料夾下看到下載的Python3.8.exe。

2.Chrome瀏覽器

Chrome瀏覽器實現檔案下載,也需要做些設定,Options設定如下:

  • download.default_directory:設定下載路徑;
  • profile.default_content_settings.popups:設定為 0 禁止彈出視窗。

通過Chrome瀏覽器,實現下載檔案程式碼如下:

from selenium import webdriver
from time import sleep

options = webdriver.ChromeOptions()
prefs = {
    "download.prompt_for_download": False,
    'download.default_directory': 'D:\\Demo',    #設定下載目錄
    "plugins.always_open_pdf_externally": True,
    'profile.default_content_settings.popups': 0,  #設定為0,禁止彈出視窗
}
options.add_experimental_option('prefs', prefs)

driver = webdriver.Chrome(chrome_options=options)

driver.get('https://www.python.org/downloads/')
driver.maximize_window()
sleep(2)
# 單擊【Download the latest version for Windows】按鈕。
driver.find_element_by_xpath('//*[@id="touchnav-wrapper"]/header/div/div[2]/div/div[3]/p/a').click()

精講視訊

如果你覺的文章讀的不過癮,可以檢視詳細的視訊教程。

測試學習路線如下


熱銷圖書

圖書京東、噹噹有售
京東: https://item.jd.com/12784287.html
噹噹: http://product.dangdang.com/29177828.html