1.簡介
前邊幾篇文章講解完如何上傳檔案,既然有上傳,那麼就可能會有下載檔案。因此巨集哥就接著講解和分享一下:自動化測試下載檔案。可能有的小夥伴或者童鞋們會覺得這不是很簡單嗎,還用你介紹和講解啊,不說就是訪問到下載頁面,然後定位到要下載的檔案的下載按鈕後,點選按鈕就可以了。其實不是這樣的,且聽巨集哥徐徐道來:巨集哥這裡的下載是去掉下載彈框的下載。
2.去掉下載彈窗的優點
(1)檢索鍵盤滑鼠自動化控制模組的匯入
(2)可以無頭化執行,不影響同時進行的其他的任務
3.Chrome自動化下載檔案
3.1引數說明
相比較Firefox來講,Chrome的下載預設不會彈出下載視窗的,我們們主要是想修改一下Chrome預設的下載路徑。
Chrome的設定看上去要比Firefox複雜一次,不過,你須要關注兩個設定。
Chrome瀏覽器類似,設定其options:
download.default_directory:設定下載路徑
profile.default_content_settings.popups:設定為 0 禁止彈出視窗
3.2程式碼設計
3.3參考程式碼
package lessons; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import java.util.HashMap; /** * @author 北京-巨集哥 * * @公眾號:北京巨集哥 * * @《手把手教你》系列技巧篇(五十六)-java+ selenium自動化測試-下載檔案-上篇(詳細教程) * * @2021年12月19日 */ public class ChromeDownload { public static void main(String[] args) throws InterruptedException { String downloadFilepath = "D:\\test2"; HashMap<String, Object> chromePrefs = new HashMap<String, Object>(); chromePrefs.put("profile.default_content_settings.popups", 0); chromePrefs.put("download.default_directory", downloadFilepath); ChromeOptions options = new ChromeOptions(); HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object>(); options.setExperimentalOption("prefs",chromePrefs); options.addArguments("--test-type"); DesiredCapabilities cap = DesiredCapabilities.chrome(); cap.setCapability(ChromeOptions.CAPABILITY, chromeOptionsMap); cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); cap.setCapability(ChromeOptions.CAPABILITY, options); WebDriver driver = new ChromeDriver(cap); 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')]")); Actions action = new Actions(driver); myElement.click();//點選下載 Thread.sleep(10000); System.out.println("browser will be close"); driver.quit(); } }
3.4執行程式碼
1.執行程式碼,右鍵Run AS->Java Appliance,控制檯輸出,如下圖所示:
2.執行程式碼後電腦端的瀏覽器的動作,如下小視訊所示:
4.小結
本來下一篇打算介紹和講解IE瀏覽器的,但是查了大量資料也嘗試了各種方法(包括網上說的鍵盤模擬和autoIT)都不能成功,因此就沒有寫關於IE瀏覽器的下載檔案。如果有清楚的可以給巨集哥留言哈!!!不過有兩個瀏覽器的方法了,夠用了。