Cách tải lên và tải xuống tệp bằng cách sử dụng Selenium
⚡ Tóm tắt thông minh
Tải lên và tải xuống tệp bằng cách sử dụng Selenium Quy trình làm việc của WebDriver dựa vào hàm sendKeys() gốc cho các trường nhập liệu, AutoIt hoặc Robot cho các hộp thoại và các lệnh CDP trong Selenium 4. Thiết lập đường dẫn tải xuống an toàn trong quá trình chạy tự động hóa.

Việc tải lên tập tin trong WebDriver được thực hiện bằng cách sử dụng phương thức `sendKeys()` trên trường nhập chọn tập tin để nhập đường dẫn của tập tin cần tải lên. Trong hướng dẫn này, bạn sẽ học cách xử lý việc tải lên và tải xuống tập tin bằng cách sử dụng WebDriver. Selenium WebDriver.
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.
nhập khẩu org.openqa.selenium.*;
nhập khẩu org.openqa.selenium.firefox.FirefoxTài xế;
giai cấp công cộng PG9 {
khoảng trống tĩnh công cộng chủ chốt(Chuỗi[] args) {
System.setProperty(“webdriver.gecko.driver”,“C:\\geckodriver.exe”);
Chuỗi baseUrl = “https://demo.guru99.com/test/upload/”;
webdriver người lái xe = người mới FirefoxTài xế();
trình điều khiển.get(baseUrl);
WebYếu tố uploadElement = driver.findElement(By.id(“uploadfile_0”));
// Nhập đường dẫn tệp vào trường nhập chọn tệp
uploadElement.sendKeys(“C:\\newhtml.html”);
// Chọn ô "Tôi chấp nhận điều khoản dịch vụ"
trình điều khiển.findElement(By.id("điều kiện")).click();
// Nhấp vào nút “Tải lên tệp”
trình điều khiển.findElement(By.name("gửi")).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 đây khi tải tệp lên trong WebDriver:
- Không cần phải mô phỏng thao tác nhấp chuột vào nút “Browse”. WebDriver tự động nhập đường dẫn tệp vào ô văn bản chọn tệp. 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.
Xử lý hộp thoại tải lên không phải dạng nhập liệu bằng AutoIt
Khi trang sử dụng nút Duyệt tùy chỉnh thay vì nút mặc định. Phương thức sendKeys() không hoạt động. Trong trường hợp đó, bạn có thể gọi một tập lệnh AutoIt từ... Selenium Nhập đường dẫn tệp vào hộp thoại hệ điều hành và nhấn Enter.
Lưu tập lệnh bên dưới dưới dạng upload.au3, biên dịch nó thành upload.exesau đó gọi nó từ Java sau khi nhấn nút Duyệt.
WinWaitActive("Mở")
Gửi(“C:\newhtml.html”)
Gửi("{ĐI VÀO}")
Từ Java, kích hoạt trình trợ giúp sau khi nhấp vào nút Duyệt:
Runtime.getRuntime().exec(“C:\\AutoIt\\upload.exe”);
Lớp java.awt.Robot là một lớp thuần túy-Java đây là giải pháp thay thế khi AutoIt không khả dụng, mặc dù AutoIt đáng tin cậy hơn. Windows vì nó chờ đợi hộp thoại theo tiêu đề.
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 Windows Nhấn phím “R”; nhập “cmd” và nhấn OK.
Nhập lệnh “cd /” để chuyển đến 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 hay không.
Có vẻ như có vấn đề khi ghi vào ổ C.
Bước 4) Bạn cần gỡ lỗi các lỗi wget trong dòng lệnh trước khi thực thi mã. Selenium WebDriver. Những lỗi này sẽ tiếp diễn trong Eclipse và các thông báo lỗi sẽ không cung cấp đầy đủ thông tin. Tốt nhất là trước tiên hãy thử chạy wget bằng dòng lệnh. Nếu nó hoạt động trên dòng lệnh, chắc chắn nó cũng sẽ hoạt động trong môi trường ảo. Eclipse.
Trong ví dụ của chúng ta, như đã trình bày ở Bước 3, có vấn đề khi ghi vào ổ C. Hãy thử thay đổi vị trí tải xuống sang ổ D và kiểm tra kết quả.
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 MessengerCăn cứ của chúng tôi URL sẽ 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 getAttribute() để 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 ta đặ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.
nhập khẩu java.io.IOException;
nhập khẩu org.openqa.selenium.*;
nhập khẩu org.openqa.selenium.firefox.FirefoxTài xế;
giai cấp công cộng PG8 {
khoảng trống tĩnh công cộng chủ chốt(Chuỗi[] args) {
System.setProperty(“webdriver.gecko.driver”,“C:\\geckodriver.exe”);
Chuỗi baseUrl = “https://demo.guru99.com/test/yahoo.html”;
webdriver người lái xe = người mới FirefoxTài xế();
trình điều khiển.get(baseUrl);
WebYếu tố downloadButton = driver.findElement(By.id(“messenger-download”));
Chuỗi sourceLocation = downloadButton.getAttribute(“href”);
Chuỗi wget_command = “cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate “ + sourceLocation;
thử {
Quy trình exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println(Giá trị thoát: “ + exitVal);
} bắt (Bị gián đoạn | IOException bán tại) {
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 ở đó.
Thiết lập đường dẫn tải xuống tùy chỉnh với Selenium 4 CDP
Selenium Mục 4 hiển thị Giao thức Công cụ dành cho Nhà phát triển Chrome, cho phép bạn kiểm soát hành vi tải xuống của trình duyệt mà không cần công cụ của bên thứ ba. Đoạn mã bên dưới trỏ tất cả các tệp tải xuống đến một thư mục tùy chỉnh và bỏ qua lời nhắc Lưu dưới dạng, do đó các tệp sẽ được lưu vào đúng vị trí mà bài kiểm tra mong đợi.
Bản đồ<Chuỗi,Đối tượng> tham số = người mới HashMap<>();
params.put("hành vi", "cho phép");
params.put(“downloadPath”, “D:\\selenium-downloads”);
trình điều khiển.thực thi lệnh Cdp(“Page.setDownloadBehavior”, tham số);
trình điều khiển.get(“https://demo.guru99.com/test/yahoo.html”);
trình điều khiển.findElement(By.id(“messenger-download”)).click();
Bạn có thể xác minh quá trình tải xuống bằng cách kiểm tra thư mục đích để tìm tên tệp dự kiến và kích thước của nó, điều này giúp quá trình kiểm tra trở nên chắc chắn mà không cần đến các tập lệnh bên ngoài.












