Làm cách nào để tải tệp xuống vị trí cụ thể trong Selenium python?

Làm cách nào để tải xuống tệp trong trình quản trị web Selenium? .  Ngoài ra, tđây là các trường hợp thử nghiệm mà bạn cần kiểm tra xem các liên kết tải xuống có hoạt động tốt hay không. Không dễ để tự động hóa chúng vì hầu hết các tính năng tải xuống sẽ hoạt động nhưng loại nội dung có thể thay đổi. Vì vậy, hãy tìm hiểu một số mẹo và thủ thuật để tải xuống tệp hoặc tệp trong Selenium . . )

Làm cách nào để tải xuống tệp trong ngăn xếp công cụ Selenium?

Chúng tôi sẽ sử dụng các thư viện dưới đây để tự động hóa các hoạt động tải xuống tệp trong Selenium

  • selen
  • Junit5
  • java11

Bước 1. Tạo WebDriver và Thêm Tùy chọn

Chrome có nhiều tùy chọn để bạn có thể thao tác. Trước hết, bạn cần đặt thư mục tự động tải xuống trong ChromeOptions, sau đó tạo trình điều khiển với tùy chọn đó. Với mục đích này, bạn cần đặt “tải xuống. default_directory” thành đường dẫn mà bạn mong muốn.  

HashMap chromePrefs = new HashMap();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", System.getProperty("user.dir"));

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
WebDriver driver = new ChromeDriver(options);

Bước 2. Tải xuống tệp trong Selenium

Đây là một phần tùy chỉnh vì tất cả các bạn đều có các tình huống khác nhau. Tôi cho rằng tất cả các bạn đều triển khai phần này trong ứng dụng của mình. Nhưng chỉ trong trường hợp tôi thêm của tôi

//We find the download links
List list =driver.findElements(By.cssSelector("div.module>p>a>img"));

//Click to 5MB web element
WebElement el = list.get(list.size()-1);
el.click();
Thread.sleep(500);

//Hide Google Popup Ad
js.executeScript("document.querySelector(\"html > ins\").style.display='none'");

//Again click to 5MB web element
el.click();

//Wait 15 seconds to download 5MB file.
//You can write custom wait. Check Selenium Wait article on swtestacademy.com
Thread.sleep(15000);

Bước 3. Kiểm tra tệp trong thư mục

Chúng tôi tạo một Đối tượng thư mục với đường dẫn tải xuống. Sau đó lấy danh sách file trên thư mục đó và thực hiện thao tác REGEX để kiểm tra xem file đã được tải xuống hay chưa. Biểu thức chính quy của chúng tôi được mã hóa rất khó, bạn có thể cần thực hiện một số thao tác biểu thức chính quy phức tạp tùy theo nhu cầu của mình

File folder = new File(System.getProperty("user.dir"));

//List the files on that folder
File[] listOfFiles = folder.listFiles();
boolean found = false;
File f = null;
     //Look for the file in the files
     // You should write smart REGEX according to the filename
     for (File listOfFile : listOfFiles) {
         if (listOfFile.isFile()) {
              String fileName = listOfFile.getName();
               System.out.println("File " + listOfFile.getName());
               if (fileName.matches("5MB.zip")) {
                   f = new File(fileName);
                   found = true;
                }
            }
        }
Assert.assertTrue(found, "Downloaded document is not found");
f.deleteOnExit();

Bây giờ, bạn có thể tải xuống một tệp trong dự án Selenium và thực hiện xác thực

Ghi chú. Để tải xuống nhiều tệp, bạn có thể lặp qua tất cả các phần tử web và nhấp vào từng phần tử một

Khi bạn sử dụng trình điều khiển web thông thường và tải xuống một tệp, tệp sẽ được tải xuống thư mục Tải xuống của máy bạn. Sau đó, nếu bạn muốn xác thực tệp hoặc đọc dữ liệu trong tệp đó, bạn cần truy cập vào thư mục Tải xuống trong máy của mình

Vấn đề ở đây là bạn sẽ không thể chạy cùng mã trên nền tảng CI/CD vì bạn đã mã hóa cứng đường dẫn đến thư mục Tải xuống bên trong mã của mình

Nhưng nếu bạn có thể tải tệp xuống một thư mục cụ thể thì sao?

Sau đó, bạn sẽ có thể sử dụng đường dẫn tương đối đến thư mục đó và xác minh tệp. Bạn cũng sẽ không gặp vấn đề gì khi chạy mã trên nền tảng CI/CD

Âm thanh tốt?

Trước tiên hãy tạo một thư mục cho các bản tải xuống của bạn

Tệp tải xuốngThư mục = Tệp mới(DOWNLOAD_FOLDER_PATH);

thư mục tải về. mkdir();

Sau đó thêm tùy chọn cho trình điều khiển

Ví dụ cho Trình điều khiển Chrome

Map preferences= new HashMap<>();

sở thích. đặt(“hồ sơ. default_content_settings. cửa sổ bật lên”, 0);

sở thích. đặt ("tải xuống. default_directory”,DOWNLOAD_FOLDER_PATH);

Tùy chọn ChromeOptions = ChromeOptions mới();

tùy chọn. setExperimentalOption(“prefs”,preferences);

Trình điều khiển webdriver = ChromeDriver mới (tùy chọn);

Đó là nó. Chỉ những thay đổi nhỏ đối với mã của bạn và chúng tôi sẵn sàng thực hiện. Bây giờ khi bạn nhấp vào một tệp để tải xuống, nó sẽ được tải xuống thư mục bạn mới tạo

Làm cách nào để tải xuống tệp tại vị trí cụ thể bằng Selenium?

Làm cách nào để tải xuống một tệp trong Selenium Webdriver? .
Bước 1. Tạo WebDriver và Thêm Tùy chọn. Chrome có nhiều tùy chọn để bạn có thể thao tác. .
Bước 2. Tải xuống tệp trong Selenium. Đây là một phần tùy chỉnh vì tất cả các bạn đều có các tình huống khác nhau. .
Bước 3. Kiểm tra tệp trong thư mục. Chúng tôi tạo một Đối tượng thư mục với đường dẫn tải xuống

Làm cách nào để đặt đường dẫn tải xuống trong Selenium Python?

Làm cách nào để tải xuống tệp bằng Selenium Python trong Chrome? .
tùy chọn = Tùy chọn ()
prefs = {"tải xuống. default_directory". CON ĐƯỜNG}
tùy chọn. add_experimental_option("prefs",prefs)
bản thân. trình điều khiển = webdriver. Chrome(tùy chọn=tùy chọn)

Làm cách nào để đặt đường dẫn tải xuống trong Chrome bằng Selenium?

default_directory", "/path/to/download");ChromeOptions options = new ChromeOptions(); options. setExperimentalOption("prefs", chromePrefs); Sau khi bạn chạy thử nghiệm và tải tệp xuống, tệp sẽ tải xuống vị trí đã chỉ định ở trên.

Làm cách nào để tự động tải xuống tệp từ trang web bằng Python?

Để tải xuống tệp từ một URL bằng Python, hãy làm theo ba bước sau. .
Cài đặt mô-đun yêu cầu và nhập nó vào dự án của bạn
sử dụng yêu cầu. get() để tải xuống dữ liệu đằng sau URL đó
Ghi tệp vào một tệp trong hệ thống của bạn bằng cách gọi open()