Cách tải lên và tải xuống tệp bằng cách sử dụng Selenium webdriver
Tải tệp lên bằng selen
Việc tải tệp lên trong WebDriver được thực hiện đơn giản bằng cách sử dụng phương thức sendKeys() trên trường nhập tệp chọn để nhập đường dẫn đến tệp sẽ được tải lên.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu Cách xử lý việc tải lên và tải xuống tệp.
Cách tải tệp lên trong Selenium
Đối với phần này, chúng tôi sẽ sử dụng https://demo.guru99.com/test/upload/ như ứng dụng thử nghiệm của chúng tôi. Trang web này dễ dàng cho phép bất kỳ khách truy cập nào tải tệp lên mà không yêu cầu họ đăng ký.

Giả sử chúng ta muốn tải lên tệp “C:\newhtml.html”. Mã WebDriver của chúng ta sẽ giống như mã được hiển thị bên dưới.
package newproject; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class PG9 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); String baseUrl = "https://demo.guru99.com/test/upload/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement uploadElement = driver.findElement(By.id("uploadfile_0")); // enter the file path onto the file-selection input field uploadElement.sendKeys("C:\\newhtml.html"); // check the "I accept the terms of service" check box driver.findElement(By.id("terms")).click(); // click the "UploadFile" button driver.findElement(By.name("send")).click(); } }
Sau khi chạy tập lệnh này, bạn sẽ có thể tải tệp lên thành công và bạn sẽ nhận được thông báo tương tự như thế này.
Hãy nhớ hai điều sau khi tải tệp lên WebDriver
- Không cần phải mô phỏng việc nhấp vào nút “Duyệt”. WebDriver tự động nhập đường dẫn tệp vào hộp văn bản chọn tệp của yếu tố
- Khi thiết lập đường dẫn tệp trong Java IDE, hãy sử dụng ký tự thoát thích hợp cho dấu gạch chéo ngược.
Cách tải xuống một tập tin trong Selenium webdriver
WebDriver không có khả năng truy cập vào hộp thoại Tải xuống được trình duyệt trình bày khi bạn nhấp vào liên kết hoặc nút tải xuống. Tuy nhiên, chúng ta có thể bỏ qua các hộp thoại này bằng cách sử dụng một chương trình riêng biệt có tên là “wget”.
Wget là gì?
Wget là một chương trình dòng lệnh nhỏ và dễ sử dụng được sử dụng để tự động tải xuống. Về cơ bản, chúng tôi sẽ truy cập Wget từ tập lệnh WebDriver của mình để thực hiện quá trình tải xuống.
Thiết lập Wget
Bước 1) Trong Ổ C của bạn, tạo một thư mục mới và đặt tên là “Wget”.
Tải xuống wget.exe từ đây và đặt nó vào thư mục Wget mà bạn đã tạo ở bước trên.
Bước 2) Mở Run bằng cách nhấn phím windows + “R”; nhập “cmd & nhấp vào ok
Gõ lệnh “cd/” để di chuyển tới thư mục gốc
Bước 3) Nhập lệnh để kiểm tra xem thiết lập đã cho có hoạt động không
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Có vẻ như có vấn đề khi ghi vào ổ C.
Bước 4) Bạn cần gỡ lỗi wget trong dòng lệnh trước khi thực thi mã bằng cách sử dụng Selenium Webdriver. Những lỗi này sẽ còn tồn tại Eclipse và các thông báo lỗi sẽ không có nhiều thông tin. Tốt nhất trước tiên hãy làm cho wget hoạt động bằng dòng lệnh. Nếu nó hoạt động trong dòng lệnh thì chắc chắn nó sẽ hoạt động trong Eclipse.
Trong ví dụ của chúng tôi, như ở bước 3, đã xảy ra sự cố khi ghi vào ổ C. Hãy thay đổi vị trí tải xuống ổ D và kiểm tra kết quả.
cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Messenger đã được tải xuống thành công.
Trước khi tiếp tục, đừng quên xóa tệp đã tải xuống
Sử dụng WebDriver và Wget
Trong ví dụ sau, chúng tôi sẽ sử dụng WebDriver và wget để tải xuống phần mềm trò chuyện phổ biến có tên là Yahoo Messenger. URL cơ sở của chúng tôi sẽ là https://demo.guru99.com/test/yahoo.html.
Bước 1) Nhập gói “java.io.IOException” vì chúng ta sẽ phải bắt lỗi IOException ở Bước 4 sau.
Bước 2) Sử dụng getAttribution() để lấy giá trị “href” của liên kết tải xuống và lưu nó dưới dạng biến Chuỗi. Trong trường hợp này, chúng tôi đặt tên biến là “sourceLocation”.
Bước 3) Thiết lập cú pháp cho wget bằng lệnh sau.
Bước 4) Bắt đầu quá trình tải xuống bằng cách gọi wget từ mã WebDriver của chúng tôi.
Tóm lại, mã WebDriver của bạn có thể trông giống như mã được hiển thị bên dưới.
package newproject; import java.io.IOException; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class PG8 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); String baseUrl = "https://demo.guru99.com/test/yahoo.html"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); WebElement downloadButton = driver.findElement(By .id("messenger-download")); String sourceLocation = downloadButton.getAttribute("href"); String wget_command = "cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate " + sourceLocation; try { Process exec = Runtime.getRuntime().exec(wget_command); int exitVal = exec.waitFor(); System.out.println("Exit value: " + exitVal); } catch (InterruptedException | IOException ex) { System.out.println(ex.toString()); } driver.close(); } }
Sau khi thực thi mã này, hãy kiểm tra ổ D của bạn và xác minh rằng Yahoo Messenger trình cài đặt đã được tải xuống thành công ở đó.
Tổng kết
- Việc tải tệp lên trong WebDriver được thực hiện đơn giản bằng cách sử dụng phương thức sendKeys() trên trường nhập tệp chọn để nhập đường dẫn đến tệp sẽ được tải lên.
- WebDriver không thể tự động tải xuống các tệp.
- Cách dễ nhất để tải xuống tệp bằng WebDriver là sử dụng Wget.