Python Selenium 進UI自動化測試時都會遇到文件上傳和下載的操作,下面介紹一下文件下載的操作
這里介紹使用FireFox瀏覽器進行文件下載的操作。
1、設置文件默認下載地址
如下圖,firefox可以通過 在地址欄輸入:about:config 或about:aupport 來查看或修改配置信息。
2、設置自動下載操作
這里有兩種解決方式
2.1、設置自動保存下載
如下圖勾選:以后自動采用相同的動作處理此類文件
這樣下次在下載該類型的文件時就不會這樣提醒了。
2.2、修改設置可以在 瀏覽器選項中進行修改
如下圖
3、進行文件下載
這樣設置完成后,但是程序啟動時打開的瀏覽器並沒有按照這種配置打開。
對比下圖可以發現,通過webdriver打開的瀏覽器與手工打開的瀏覽器展示的不同,這是因為webdriver打開的瀏覽器沒有按照瀏覽器設置的配置文件打開。如果想按照配置文件打開,在打開之前要先獲取配置文件信息。
解決方法有兩種,如下
3.1、加入代碼如下:
profile = webdriver.FirefoxProfile(r"C:\Users\Skyyj\AppData\Roaming\Mozilla\Firefox\Profiles\1rzh6139.default") self.driver = webdriver.Firefox(profile)
3.2、在代碼中加入配置信息
通過about:config
通過%APPDATA%\Mozilla\Firefox\Profiles\找到默認配置
找到mimeTypes.rdf目錄,用其它方式打開,查找你剛剛保存的文件類型
mimeTypes.rdf 就存在上面 profile 的配置路徑中
C:\Users\Skyyj\AppData\Roaming\Mozilla\Firefox\Profiles\1rzh6139.default
查找fileExtensions="xlsx"
NC:value="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
NC:editable="true"
NC:fileExtensions="xlsx"
NC:description="xlsx File">
從文件中就可以得知我們需要的文件類型是什么
插入代碼如下:
#profile = webdriver.FirefoxProfile(r"C:\Users\Skyyj\AppData\Roaming\Mozilla\Firefox\Profiles\1rzh6139.default") profile = webdriver.FirefoxProfile() ##設置成0代表下載到瀏覽器默認下載路徑;設置成2則可以保存到指定目錄 profile.set_preference("browser.download.folderList", 2) #這里設置與否不影響,沒有發現有什么影響。 #profile.set_preference("browser.download.manager.showWhenStarting", False) profile.set_preference("browser.download.dir", r"c:\Down") profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") #這里設置與否沒有發現有什么影響 #profile.set_preference("browser.helperApps.alwaysAsk.force", False); self.driver = webdriver.Firefox(profile)
建議使用第二種,這樣不需要設置瀏覽器,可移植性好。