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ề việc làm thế nào để có thể upload file trong Selenium?
Có nhiều cách để upload 1 file lên trang web, ví dụ như bạn có thể dùng Sikuli, autoIT … Trong nội dung bài này, mình sẽ hướng dẫn các bạn upload file với hàm sendKeys() của Selenium.
Bây giờ mình hãy đi vào nội dung chính của topic hôm nay nhé.
1. Upload one file
- Ví dụ như hình trên, đầu tiên mình sẽ tìm localor của element upload. 2 là mình chuẩn bị sẵn 1 file (đường dẫn tuyệt đối của file) để upload.
- Lưu ý: Khi upload file với hàm sendKeys(), các bạn phải tìm đúng đến thẻ html là input và có attribute type = ‘file’
- Sample code::
@Test
public void TC_01_UploadOneFile() throws InterruptedException {
// Get file path
String filePath = System.getProperty("user.dir") + "/DataFile/uploadFile1.txt";
// Open browser
driver.get("https://mdbootstrap.com/docs/standard/forms/file/");
Thread.sleep(2000);
// Find web element
WebElement elementUploadFIle = driver.findElement(By.xpath("//input[@id='customFile']"));
// Upload file
elementUploadFIle.sendKeys(filePath);
Thread.sleep(4000);
}
- Giải thích thêm: ở đây mình có sử dụng dòng code System.getProperty(“user.dir”) để get đường dẫn của project mình đang mở và sau đó nối với thử mục DataFile. Do file upload file mình đang lưu trữ ở đây. Trong code automation, bạn nên tạo folder để chứa data file bên trong project của bạn. Mục đích của việc này là khi bạn commit code lên git, đồng đội của bạn sẽ get code về chạy mà không bất kỳ lỗi gì. Nếu bạn để đường dẫn tuyệt đối, thì sure là 100% đồng đội của bạn khi chạy sẽ gặp error.
2. Upload multi file
- Ở ví dụ này, mình sẽ lưu trữ 2 file image1.png và image2.png trong folder DataFile
- Sample code:
@Test
public void TC_02_UploadMultiFile() throws InterruptedException {
// Get file path
String filePath1 = System.getProperty("user.dir") + "/DataFile/image1.png";
String filePath2 = System.getProperty("user.dir") + "/DataFile/image2.png";
// Open browser
driver.get("https://blueimp.github.io/jQuery-File-Upload/");
Thread.sleep(2000);
// Find web element
WebElement elementUploadFIle = driver.findElement(By.xpath("//input[@type='file']"));
// Upload file
elementUploadFIle.sendKeys(filePath1 + "\n" + filePath2);
Thread.sleep(4000);
}
- Kết quả:
3. Lời kết
Như vậy chúng ta đã tìm hiểu qua cách xử lý cho việc upload 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.