1.簡介
前邊幾篇文章講解完如何上傳文件,既然有上傳,那么就可能會有下載文件。因此宏哥就接着講解和分享一下:自動化測試下載文件。可能有的小伙伴或者童鞋們會覺得這不是很簡單嗎,還用你介紹和講解啊,不說就是訪問到下載頁面,然后定位到要下載的文件的下載按鈕后,點擊按鈕就可以了。其實不是這樣的,且聽宏哥徐徐道來:宏哥這里的下載是去掉下載彈框的下載。
2.去掉下載彈窗的優點
(1)檢索鍵盤鼠標自動化控制模塊的導入
(2)可以無頭化運行,不影響同時進行的其他的任務
3.Firefox自動化下載文件
3.1參數說明
為了不彈出下載框需要對Firefox的一些參數進行設置:
browser.download.dir:指定下載路徑 browser.download.folderList:設置成 2 表示使用自定義下載路徑;設置成 0 表示下載到桌面;設置成 1 表示下載到默認路徑 browser.download.manager.showWhenStarting:在開始下載時是否顯示下載管理器 browser.helperApps.neverAsk.saveToDisk:對所給出文件類型不再彈出框進行詢問
3.2代碼設計
3.3參考代碼
package lessons; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.By; /** * @author 北京-宏哥 * * @公眾號:北京宏哥 * * @《手把手教你》系列技巧篇(五十六)-java+ selenium自動化測試-下載文件-上篇(詳細教程) * * @2021年12月17日 */ public class FirefoxDownload { public static void main(String[] args)throws InterruptedException { System.setProperty("webdriver.gecko.driver", ".\\Tools\\geckodriver.exe"); FirefoxProfile profile = new FirefoxProfile(); profile.setPreference("browser.download.folderList", 2); profile.setPreference("browser.download.dir", "D:\\test2"); profile.setPreference("browser.download.manager.showWhenStarting", false); profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream"); FirefoxOptions firefoxOptions = new FirefoxOptions(); firefoxOptions.setProfile(profile); // 打開一個帶上門設置好profile的火狐瀏覽器 WebDriver driver = new FirefoxDriver(firefoxOptions); //WebDriver driver =new FirefoxDriver(profile); driver.manage().window().maximize(); driver.get("https://pypi.org/project/selenium/#files");//到目標網頁 Thread.sleep(10000); WebElement myElement = driver.findElement(By.xpath("//a[contains(text(),'selenium-4.1.0-py3-none-any.whl')]")); myElement.click();//點擊下載 Thread.sleep(10000); System.out.println("browser will be close"); driver.quit(); } }
3.4運行代碼
1.運行代碼,右鍵Run AS->Java Appliance,控制台輸出,如下圖所示:
2.運行代碼后電腦端的瀏覽器的動作,如下小視頻所示:
4.小結
Firefox需要針對每種文件類型進行設置,對於不知道文件類型的可以用抓包軟件進行抓包,F12找到導致彈框的請求,查看該請求response的header,不出意外的話content-type應該就是你要的結果。具體查看文件類型的方法如下: