Πώς να ανεβάσετε και να κατεβάσετε ένα αρχείο χρησιμοποιώντας 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 Πρόγραμμα οδήγησης Web
Το WebDriver δεν έχει δυνατότητα πρόσβασης στα παράθυρα διαλόγου Λήψη παρουσιάζεται από προγράμματα περιήγησης όταν κάνετε κλικ σε έναν σύνδεσμο ή ένα κουμπί λήψης. Ωστόσο, μπορούμε να παρακάμψουμε αυτά τα παράθυρα διαλόγου χρησιμοποιώντας ένα ξεχωριστό πρόγραμμα που ονομάζεται "wget".
Τι είναι το Wget;
Το Wget είναι ένα μικρό και εύχρηστο πρόγραμμα γραμμής εντολών που χρησιμοποιείται για την αυτοματοποίηση των λήψεων. Βασικά, θα έχουμε πρόσβαση στο Wget από το σενάριο WebDriver για να εκτελέσουμε τη διαδικασία λήψης.
Ρύθμιση του Wget
Βήμα 1) Στη μονάδα δίσκου C, δημιουργήστε έναν νέο φάκελο και ονομάστε τον "Wget".
Κατεβάστε το wget.exe από εδώ και τοποθετήστε το στο φάκελο Wget που δημιουργήσατε από το παραπάνω βήμα.
Βήμα 2) Ανοίξτε το Run πατώντας το πλήκτρο windows + “R” ; πληκτρολογήστε cmd και κάντε κλικ στο ok
Πληκτρολογήστε την εντολή "cd /" για να μετακινηθείτε στον ριζικό κατάλογο
Βήμα 3) Πληκτρολογήστε την εντολή για να ελέγξετε εάν η συγκεκριμένη ρύθμιση λειτουργεί
cmd /c C:\\Wget\\wget.exe -P C: --no-check-certificate https://demo.guru99.com/selenium/msgr11us.exe
Φαίνεται ότι υπάρχει πρόβλημα κατά την εγγραφή στη μονάδα δίσκου C.
Βήμα 4) Πρέπει να διορθώσετε τα σφάλματα wget στη γραμμή εντολών προτού εκτελέσετε τον κώδικα χρησιμοποιώντας Selenium Webdriver. Αυτά τα σφάλματα θα παραμείνουν 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.