Chào các bạn đã đến với chủ đề tiếp theo của mình. Hôm nay, mình sẽ tiếp tục giới thiệu về cách xử lý download file và làm thế nào để kiểm tra file đó đã tải về đúng hay không?
Ở nội dung bài này, mình sẽ hướng dẫn các bạn 1 vài cách để kiểm tra file đã tải về đúng hay không nhé.
1. Ý tưởng
- Trước khi tải về -> xóa toàn bộ file trong thư mục download
- Sau khi tải về -> kiểm tra tên file đó có tồn tại hay không?
- Or kiểm tra extension của file đó. Ví dụ như excel (.xls/ .xlsx/ .csv), word (.doc/ .docx), text file (.txt), Pdf (.pdf) …
2. Triển khai
- Trước tiên, chúng ta sẽ chủ động config đường dẫn download cho webdriver. Mục đích của việc này là sẽ giúp cho code của chúng ta chạy ổn định hơn.
String downloadFilePath = System.getProperty("user.dir") + "\\DownloadFile";
HashMap<String, Object> chromePrefs = new HashMap<>();
chromePrefs.put("download.default_directory", downloadFilePath);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
driver = new ChromeDriver(options);
- Giải thích: Ở đoạn code trên, mình sẽ config đường dẫn download mặc định của webdriver là folder DownloadFile ở trong project hiện tại mình đang code. Ví dụ như hình sau:
3. Sample code
package org.example.Topic29;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.io.File;
import java.io.IOException;
import java.time.Duration;
import java.util.HashMap;
public class DownloadFile {
WebDriver driver;
String downloadFilePath = System.getProperty("user.dir") + "\\DownloadFile";
@BeforeClass
public void beforeClass() {
HashMap<String, Object> chromePrefs = new HashMap<>();
chromePrefs.put("download.default_directory", downloadFilePath);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
driver = new ChromeDriver(options);
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.manage().window().maximize();
}
@Test
public void TC_01_CheckFileDownloadExisted() throws InterruptedException {
driver.get("https://demo.automationtesting.in/FileDownload.html");
// Xóa toàn bộ file trong thư mục
deleteAllFileInDownloadFolder();
// Click download button
driver.findElement(By.cssSelector(".btn-primary")).click();
// Wait some seconds to download file
Thread.sleep(10000);
boolean isExist = isFileExist(downloadFilePath + "\\samplefile.pdf");
Assert.assertTrue(isExist, "Downloaded document is found");
}
@Test
public void TC_02_CheckFileExtension() throws InterruptedException {
driver.get("https://demo.automationtesting.in/FileDownload.html");
// Xóa toàn bộ file trong thư mục
deleteAllFileInDownloadFolder();
// Click download button
driver.findElement(By.cssSelector(".btn-primary")).click();
// Wait some seconds to download file
Thread.sleep(10000);
String ext = getFileExtension(downloadFilePath);
Assert.assertEquals(ext, "pdf");
}
/*
* Delete all file in download folder
*/
public void deleteAllFileInDownloadFolder() {
try{
File directory = new File(downloadFilePath);
FileUtils.cleanDirectory(directory);
} catch (IOException e) {
System.out.print(e.getMessage());
}
}
/*
* Check if file exists
*/
public boolean isFileExist(String filePath){
if (filePath != null){
File file = new File(filePath);
return file.exists() && file.isFile();
}
return false;
}
/*
* get file extension
*/
public static String getFileExtension(String filePath){
File folder = new File(filePath);
//List the files on that folder
File[] listOfFiles = folder.listFiles();
String fileName = "";
for (File listOfFile : listOfFiles) {
if (listOfFile.isFile()) {
fileName = listOfFile.getName();
}
}
String ext = FilenameUtils.getExtension(fileName);
return ext;
}
@AfterClass
public void afterClass() {
driver.quit();
}
}
4. Kết
Như vậy chúng ta đã tìm hiểu qua cách xử lý cho việc download file trên Selenium. Cảm ơn các bạn đã theo dõi bài viết của mình. Chúc các bạn thành công. Hẹn gặp lại các bạn ở những chủ đề tiếp theo.