วิธีอัพโหลดและดาวน์โหลดไฟล์โดยใช้ Selenium ไดรเวอร์เว็บ

อัพโหลดไฟล์ในเซเลเนียม

การอัปโหลดไฟล์ใน WebDriver ทำได้โดยใช้เมธอด sendKeys() ในช่องป้อนข้อมูลสำหรับเลือกไฟล์เพื่อป้อนเส้นทางไปยังไฟล์ที่จะอัปโหลด

ในบทช่วยสอนนี้ เราจะได้เรียนรู้วิธีจัดการกับการอัพโหลดและดาวน์โหลดไฟล์

วิธีอัพโหลดไฟล์เข้า Selenium

สำหรับส่วนนี้เราจะใช้ https://demo.guru99.com/test/upload/ เป็นแอปพลิเคชันทดสอบของเรา ไซต์นี้อนุญาตให้ผู้เยี่ยมชมอัปโหลดไฟล์ได้อย่างง่ายดายโดยไม่ต้องลงทะเบียน

อัพโหลดไฟล์เข้า Selenium
จัดการป๊อปอัปการอัปโหลดไฟล์ใน Selenium ไดรเวอร์เว็บ

สมมติว่าเราต้องการอัปโหลดไฟล์ “C:\newhtml.html” รหัส WebDriver ของเราควรเป็นแบบที่แสดงด้านล่าง

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();
        }
}

หลังจากรันสคริปต์นี้ คุณควรจะสามารถอัปโหลดไฟล์ได้สำเร็จ และคุณควรได้รับข้อความที่คล้ายกันนี้

อัพโหลดไฟล์เข้า Selenium

โปรดจำสองสิ่งต่อไปนี้เมื่ออัปโหลดไฟล์ใน WebDriver

  1. ไม่จำเป็นต้องจำลองการคลิกปุ่ม "เรียกดู" WebDriver จะป้อนเส้นทางไฟล์ลงในกล่องข้อความการเลือกไฟล์โดยอัตโนมัติ องค์ประกอบ
  2. เมื่อตั้งค่าเส้นทางไฟล์ใน Java IDE ให้ใช้อักขระหลีกที่เหมาะสมสำหรับแบ็กสแลช

อัพโหลดไฟล์เข้า Selenium

วิธีดาวน์โหลดไฟล์ในรูปแบบ Selenium ไดรเวอร์เว็บ

WebDriver ไม่มีความสามารถในการเข้าถึงกล่องโต้ตอบการดาวน์โหลด จะแสดงโดยเบราว์เซอร์เมื่อคุณคลิกลิงก์หรือปุ่มดาวน์โหลด อย่างไรก็ตาม เราสามารถข้ามกล่องโต้ตอบเหล่านี้ได้โดยใช้โปรแกรมแยกต่างหากที่เรียกว่า "wget"

Wget คืออะไร?

Wget เป็นโปรแกรมบรรทัดคำสั่งขนาดเล็กและใช้งานง่ายที่ใช้ในการดาวน์โหลดอัตโนมัติ- โดยพื้นฐานแล้ว เราจะเข้าถึง Wget จากสคริปต์ WebDriver ของเราเพื่อดำเนินการดาวน์โหลด

การตั้งค่า Wget

ขั้นตอน 1) ในไดรฟ์ C ของคุณ ให้สร้างโฟลเดอร์ใหม่และตั้งชื่อเป็น "Wget"

ดาวน์โหลด wget.exe จากที่นี่ และวางไว้ในโฟลเดอร์ Wget ที่คุณสร้างจากขั้นตอนข้างต้น

การตั้งค่า Wget

ขั้นตอน 2) เปิด Run โดยกดปุ่ม Windows + “R” ; พิมพ์ “cmd แล้วคลิกตกลง

การตั้งค่า Wget

พิมพ์คำสั่ง “cd /” เพื่อย้ายไปยังไดเร็กทอรีราก

การตั้งค่า Wget

ขั้นตอน 3) พิมพ์คำสั่งเพื่อตรวจสอบว่าการตั้งค่าที่กำหนดใช้งานได้หรือไม่

cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

การตั้งค่า Wget

ดูเหมือนว่าจะมีปัญหาในการเขียนลงในไดรฟ์ C

ขั้นตอน 4) คุณต้องแก้ไขข้อผิดพลาด wget ในบรรทัดคำสั่งก่อนที่จะรันโค้ดโดยใช้ Selenium เว็บไดรเวอร์ ข้อผิดพลาดเหล่านี้จะยังคงมีอยู่ Eclipse และข้อความแสดงข้อผิดพลาดจะไม่เป็นข้อมูล วิธีที่ดีที่สุดคือให้ wget ทำงานโดยใช้บรรทัดคำสั่งก่อน ถ้ามันทำงานในบรรทัดคำสั่งมันจะทำงานได้อย่างแน่นอน Eclipse.

ในตัวอย่างของเรา ดังแสดงในขั้นตอนที่ 3 มีปัญหาในการเขียนลงในไดรฟ์ C ลองเปลี่ยนตำแหน่งดาวน์โหลดเป็นไดรฟ์ D และตรวจสอบผลลัพธ์

cmd /c C:\\Wget\\wget.exe -P D: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe

การตั้งค่า Wget

Messenger ดาวน์โหลดสำเร็จแล้ว

ก่อนที่คุณจะดำเนินการต่ออย่าลืมลบไฟล์ที่ดาวน์โหลดมา

ใช้ WebDriver และ Wget

ในตัวอย่างต่อไปนี้ เราจะใช้ WebDriver และ wget เพื่อดาวน์โหลดซอฟต์แวร์แชทยอดนิยมที่เรียกว่า Yahoo Messenger- URL ฐานของเราจะเป็น https://demo.guru99.com/test/yahoo.html.

ใช้ WebDriver และ Wget

ขั้นตอน 1) นำเข้าแพ็กเกจ “java.io.IOException” เนื่องจากเราจะต้องจับ IOException ในภายหลังในขั้นตอนที่ 4

ใช้ WebDriver และ Wget

ขั้นตอน 2) ใช้ getAttribute() เพื่อรับค่า "href" ของลิงก์ดาวน์โหลดและบันทึกเป็นตัวแปร String ในกรณีนี้ เราตั้งชื่อตัวแปรเป็น "sourceLocation"

ใช้ WebDriver และ Wget

ขั้นตอน 3) ตั้งค่าไวยากรณ์สำหรับ wget โดยใช้คำสั่งต่อไปนี้

ใช้ WebDriver และ Wget

ขั้นตอน 4) เริ่มต้นกระบวนการดาวน์โหลดโดยการเรียก wget จากโค้ด WebDriver ของเรา

ใช้ WebDriver และ Wget

โดยสรุป โค้ด WebDriver ของคุณอาจมีลักษณะเหมือนกับที่แสดงด้านล่าง

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();
        }
        
}

หลังจากรันโค้ดนี้แล้ว ให้ตรวจสอบไดรฟ์ D ของคุณและตรวจสอบว่า Yahoo Messenger ดาวน์โหลดตัวติดตั้งสำเร็จแล้วที่นั่น

ใช้ WebDriver และ Wget

สรุป

  • การอัปโหลดไฟล์ใน WebDriver ทำได้โดยใช้เมธอด sendKeys() ในช่องป้อนข้อมูลสำหรับเลือกไฟล์เพื่อป้อนเส้นทางไปยังไฟล์ที่จะอัปโหลด
  • WebDriver ไม่สามารถดาวน์โหลดไฟล์โดยอัตโนมัติได้
  • วิธีที่ง่ายที่สุดในการดาวน์โหลดไฟล์โดยใช้ WebDriver คือการใช้ Wget