วิธีอัพโหลดและดาวน์โหลดไฟล์โดยใช้ Selenium ไดรเวอร์เว็บ
อัพโหลดไฟล์ในเซเลเนียม
การอัปโหลดไฟล์ใน WebDriver ทำได้โดยใช้เมธอด sendKeys() ในช่องป้อนข้อมูลสำหรับเลือกไฟล์เพื่อป้อนเส้นทางไปยังไฟล์ที่จะอัปโหลด
ในบทช่วยสอนนี้ เราจะได้เรียนรู้วิธีจัดการกับการอัพโหลดและดาวน์โหลดไฟล์
วิธีอัพโหลดไฟล์เข้า Selenium
สำหรับส่วนนี้เราจะใช้ https://demo.guru99.com/test/upload/ เป็นแอปพลิเคชันทดสอบของเรา ไซต์นี้อนุญาตให้ผู้เยี่ยมชมอัปโหลดไฟล์ได้อย่างง่ายดายโดยไม่ต้องลงทะเบียน
สมมติว่าเราต้องการอัปโหลดไฟล์ “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(); } }
หลังจากรันสคริปต์นี้ คุณควรจะสามารถอัปโหลดไฟล์ได้สำเร็จ และคุณควรได้รับข้อความที่คล้ายกันนี้
โปรดจำสองสิ่งต่อไปนี้เมื่ออัปโหลดไฟล์ใน WebDriver
- ไม่จำเป็นต้องจำลองการคลิกปุ่ม "เรียกดู" WebDriver จะป้อนเส้นทางไฟล์ลงในกล่องข้อความการเลือกไฟล์โดยอัตโนมัติ องค์ประกอบ
- เมื่อตั้งค่าเส้นทางไฟล์ใน Java IDE ให้ใช้อักขระหลีกที่เหมาะสมสำหรับแบ็กสแลช
วิธีดาวน์โหลดไฟล์ในรูปแบบ Selenium ไดรเวอร์เว็บ
WebDriver ไม่มีความสามารถในการเข้าถึงกล่องโต้ตอบการดาวน์โหลด จะแสดงโดยเบราว์เซอร์เมื่อคุณคลิกลิงก์หรือปุ่มดาวน์โหลด อย่างไรก็ตาม เราสามารถข้ามกล่องโต้ตอบเหล่านี้ได้โดยใช้โปรแกรมแยกต่างหากที่เรียกว่า "wget"
Wget คืออะไร?
Wget เป็นโปรแกรมบรรทัดคำสั่งขนาดเล็กและใช้งานง่ายที่ใช้ในการดาวน์โหลดอัตโนมัติ- โดยพื้นฐานแล้ว เราจะเข้าถึง Wget จากสคริปต์ WebDriver ของเราเพื่อดำเนินการดาวน์โหลด
การตั้งค่า Wget
ขั้นตอน 1) ในไดรฟ์ C ของคุณ ให้สร้างโฟลเดอร์ใหม่และตั้งชื่อเป็น "Wget"
ดาวน์โหลด wget.exe จากที่นี่ และวางไว้ในโฟลเดอร์ Wget ที่คุณสร้างจากขั้นตอนข้างต้น
ขั้นตอน 2) เปิด Run โดยกดปุ่ม Windows + “R” ; พิมพ์ “cmd แล้วคลิกตกลง
พิมพ์คำสั่ง “cd /” เพื่อย้ายไปยังไดเร็กทอรีราก
ขั้นตอน 3) พิมพ์คำสั่งเพื่อตรวจสอบว่าการตั้งค่าที่กำหนดใช้งานได้หรือไม่
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
ดูเหมือนว่าจะมีปัญหาในการเขียนลงในไดรฟ์ 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
Messenger ดาวน์โหลดสำเร็จแล้ว
ก่อนที่คุณจะดำเนินการต่ออย่าลืมลบไฟล์ที่ดาวน์โหลดมา
ใช้ WebDriver และ Wget
ในตัวอย่างต่อไปนี้ เราจะใช้ WebDriver และ wget เพื่อดาวน์โหลดซอฟต์แวร์แชทยอดนิยมที่เรียกว่า Yahoo Messenger- URL ฐานของเราจะเป็น https://demo.guru99.com/test/yahoo.html.
ขั้นตอน 1) นำเข้าแพ็กเกจ “java.io.IOException” เนื่องจากเราจะต้องจับ IOException ในภายหลังในขั้นตอนที่ 4
ขั้นตอน 2) ใช้ getAttribute() เพื่อรับค่า "href" ของลิงก์ดาวน์โหลดและบันทึกเป็นตัวแปร String ในกรณีนี้ เราตั้งชื่อตัวแปรเป็น "sourceLocation"
ขั้นตอน 3) ตั้งค่าไวยากรณ์สำหรับ wget โดยใช้คำสั่งต่อไปนี้
ขั้นตอน 4) เริ่มต้นกระบวนการดาวน์โหลดโดยการเรียก wget จากโค้ด WebDriver ของเรา
โดยสรุป โค้ด 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 ทำได้โดยใช้เมธอด sendKeys() ในช่องป้อนข้อมูลสำหรับเลือกไฟล์เพื่อป้อนเส้นทางไปยังไฟล์ที่จะอัปโหลด
- WebDriver ไม่สามารถดาวน์โหลดไฟล์โดยอัตโนมัติได้
- วิธีที่ง่ายที่สุดในการดาวน์โหลดไฟล์โดยใช้ WebDriver คือการใช้ Wget