天天看點

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

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

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

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類型,如表所示。

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

更多對應檔案的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()
           

::: hljs-center

--------------------------------------------------------

:::

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

【2021】UI自動化測試:Selenium3自動化測試

 https://edu.51cto.com/course/26488.html