Πώς να ανεβάσετε και να κατεβάσετε ένα αρχείο χρησιμοποιώντας Selenium
⚡ Έξυπνη Σύνοψη
Μεταφόρτωση και λήψη αρχείου χρησιμοποιώντας Selenium Οι ροές εργασίας WebDriver βασίζονται στην εγγενή sendKeys() για τα πεδία εισαγωγής, στο AutoIt ή στο Robot για τους διαλόγους και στις εντολές CDP στο Selenium 4 για να ορίσετε ασφαλείς διαδρομές λήψης κατά τη διάρκεια των αυτοματοποιημένων εκτελέσεων.

Η μεταφόρτωση αρχείων στο WebDriver γίνεται απλώς χρησιμοποιώντας τη μέθοδο sendKeys() στο πεδίο εισαγωγής file-select για να εισαγάγετε τη διαδρομή του αρχείου που θα μεταφορτωθεί. Σε αυτό το σεμινάριο, θα μάθετε πώς να χειρίζεστε τις μεταφορτώσεις και τις λήψεις αρχείων χρησιμοποιώντας Selenium WebDriver.
Πώς να ανεβάσετε αρχείο σε Selenium
Για αυτήν την ενότητα, θα χρησιμοποιήσουμε https://demo.guru99.com/test/upload/ ως εφαρμογή δοκιμής μας. Αυτός ο ιστότοπος επιτρέπει εύκολα σε οποιονδήποτε επισκέπτη να ανεβάζει αρχεία χωρίς να χρειάζεται να εγγραφεί.

Ας υποθέσουμε ότι θέλουμε να ανεβάσουμε το αρχείο "C:\newhtml.html". Ο κώδικας WebDriver μας θα πρέπει να είναι όπως αυτός που φαίνεται παρακάτω.
εισαγωγή org.openqa.selenium.*;
εισαγωγή org.openqa.selenium.firefox.FirefoxΠρογράμματα οδήγησης;
δημόσια τάξη PG9 {
δημόσιο στατικό κενό κύριος(Σπάγγος[] ορίσματα) {
System.setProperty(«webdriver.gecko.driver»,«C:\\geckodriver.exe»);
Σπάγγος βασική διεύθυνση URL = «https://demo.guru99.com/test/upload/»;
Πρόγραμμα οδήγησης Web οδηγός = νέος FirefoxΟδηγός();
driver.get(baseUrl);
Στοιχείο Ιστού uploadElement = driver.findElement(By.id()«ανεβάστε αρχείο_0»))?
// εισάγετε τη διαδρομή αρχείου στο πεδίο εισαγωγής επιλογής αρχείου
uploadElement.sendKeys(«C:\\newhtml.html»);
// επιλέξτε το πλαίσιο ελέγχου "Αποδέχομαι τους όρους παροχής υπηρεσιών"
driver.findElement(By.id()"όροι")).κλικ();
// κάντε κλικ στο κουμπί "Μεταφόρτωση αρχείου"
driver.findElement(Από.όνομα("στείλετε")).κλικ();
}
}
Αφού εκτελέσετε αυτό το σενάριο, θα πρέπει να μπορείτε να ανεβάσετε το αρχείο με επιτυχία και θα πρέπει να λάβετε ένα παρόμοιο μήνυμα.
Να θυμάστε τα ακόλουθα δύο πράγματα κατά την αποστολή αρχείων στο WebDriver:
- Δεν χρειάζεται να προσομοιώσετε το πάτημα του κουμπιού «Αναζήτηση». Το WebDriver εισάγει αυτόματα τη διαδρομή αρχείου στο πλαίσιο κειμένου επιλογής αρχείου του στοιχείο.
- Όταν ορίζετε τη διαδρομή αρχείου στο Java IDE, χρησιμοποιήστε τον κατάλληλο χαρακτήρα διαφυγής για την πίσω κάθετο.
Χειρισμός παραθύρων διαλόγου μεταφόρτωσης χωρίς εισαγωγή με το AutoIt
Όταν η σελίδα χρησιμοποιεί ένα προσαρμοσμένο κουμπί περιήγησης αντί για ένα εγγενές κουμπί στοιχείο, το sendKeys() δεν λειτουργεί. Σε αυτήν την περίπτωση, μπορείτε να καλέσετε ένα σενάριο AutoIt από Selenium για να πληκτρολογήσετε τη διαδρομή αρχείου στο παράθυρο διαλόγου του λειτουργικού συστήματος και πατήστε Enter.
Αποθηκεύστε το παρακάτω σενάριο ως upload.au3, μεταγλωττίστε το σε upload.exe, στη συνέχεια καλέστε το από Java αφού κάνετε κλικ στο κουμπί Αναζήτηση.
WinWaitActive("Ανοιξε")
Στέλνω(«C:\newhtml.html»)
Στέλνω("{ΕΙΣΑΓΩ}")
Από Java, ενεργοποιήστε τον βοηθό αφού κάνετε κλικ στο κουμπί Αναζήτηση:
Διάρκεια.getRuntime().exec(«C:\\AutoIt\\upload.exe»);
Η κλάση java.awt.Robot είναι μια καθαρά-Java εναλλακτική λύση όταν το AutoIt δεν είναι διαθέσιμο, αν και το AutoIt είναι πιο αξιόπιστο σε Windows επειδή περιμένει το παράθυρο διαλόγου ανά τίτλο.
Πώς να κατεβάσετε ένα αρχείο σε Selenium Πρόγραμμα οδήγησης Web
Το WebDriver δεν έχει δυνατότητα πρόσβασης στα παράθυρα διαλόγου Λήψη παρουσιάζεται από προγράμματα περιήγησης όταν κάνετε κλικ σε έναν σύνδεσμο ή ένα κουμπί λήψης. Ωστόσο, μπορούμε να παρακάμψουμε αυτά τα παράθυρα διαλόγου χρησιμοποιώντας ένα ξεχωριστό πρόγραμμα που ονομάζεται "wget".
Τι είναι το Wget;
Το Wget είναι ένα μικρό και εύχρηστο πρόγραμμα γραμμής εντολών που χρησιμοποιείται για την αυτοματοποίηση των λήψεων. Βασικά, θα έχουμε πρόσβαση στο Wget από το σενάριο WebDriver για να εκτελέσουμε τη διαδικασία λήψης.
Ρύθμιση του Wget
Βήμα 1) Στη μονάδα δίσκου C, δημιουργήστε έναν νέο φάκελο και ονομάστε τον "Wget".
Κατεβάστε το wget.exe από εδώ και τοποθετήστε το στον φάκελο Wget που δημιουργήσατε στο παραπάνω βήμα.
Βήμα 2) Ανοίξτε την Εκτέλεση πατώντας Windows πλήκτρο + "R"; πληκτρολογήστε "cmd" και κάντε κλικ στο OK.
Πληκτρολογήστε την εντολή "cd /" για να μετακινηθείτε στον ριζικό κατάλογο.
Βήμα 3) Πληκτρολογήστε την εντολή για να ελέγξετε αν η δεδομένη ρύθμιση λειτουργεί.
Φαίνεται ότι υπάρχει πρόβλημα κατά την εγγραφή στη μονάδα δίσκου C.
Βήμα 4) Πρέπει να εντοπίσετε σφάλματα στα σφάλματα wget στη γραμμή εντολών πριν εκτελέσετε τον κώδικα χρησιμοποιώντας Selenium WebDriver. Αυτά τα σφάλματα θα παραμείνουν Eclipse και τα μηνύματα σφάλματος δεν θα είναι τόσο κατατοπιστικά. Είναι καλύτερο να ξεκινήσετε να λειτουργεί το wget χρησιμοποιώντας τη γραμμή εντολών. Εάν λειτουργεί στη γραμμή εντολών, σίγουρα θα λειτουργήσει και σε Eclipse.
Στο παράδειγμά μας, όπως φαίνεται στο Βήμα 3, υπάρχει πρόβλημα κατά την εγγραφή στη μονάδα δίσκου C. Ας αλλάξουμε τη θέση λήψης στη μονάδα δίσκου D και ας ελέγξουμε τα αποτελέσματα.
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 μπορεί να μοιάζει με αυτόν που φαίνεται παρακάτω.
εισαγωγή java.io.IOException;
εισαγωγή org.openqa.selenium.*;
εισαγωγή org.openqa.selenium.firefox.FirefoxΠρογράμματα οδήγησης;
δημόσια τάξη PG8 {
δημόσιο στατικό κενό κύριος(Σπάγγος[] ορίσματα) {
System.setProperty(«webdriver.gecko.driver»,«C:\\geckodriver.exe»);
Σπάγγος βασική διεύθυνση URL = «https://demo.guru99.com/test/yahoo.html»;
Πρόγραμμα οδήγησης Web οδηγός = νέος FirefoxΟδηγός();
driver.get(baseUrl);
Στοιχείο Ιστού downloadButton = driver.findElement(By.id()«λήψη messenger»))?
Σπάγγος sourceLocation = downloadButton.getAttribute(«href»);
Σπάγγος wget_command = «cmd /c C:\\Wget\\wget.exe -PD: –no-check-certificate» + τοποθεσία πηγής;
προσπαθώ {
Διαδικασία exec = Runtime.getRuntime().exec(wget_command);
int exitVal = exec.waitFor();
System.out.println(«Τιμή εξόδου:» + exitVal);
} αλιευμάτων (InterruptException | IOException π.χ.) {
System.out.println(π.χ.toString());
}
driver.close();
}
}
Αφού εκτελέσετε αυτόν τον κωδικό, ελέγξτε τη μονάδα D και επαληθεύστε ότι το Yahoo Messenger Το πρόγραμμα εγκατάστασης έγινε με επιτυχία από εκεί.
Ορισμός προσαρμοσμένης διαδρομής λήψης με Selenium 4 CDP
Selenium Το 4 εκθέτει το πρωτόκολλο Chrome DevTools, το οποίο σας επιτρέπει να ελέγχετε τη συμπεριφορά λήψης του προγράμματος περιήγησης χωρίς εργαλεία τρίτων. Το παρακάτω απόσπασμα κατευθύνει όλες τις λήψεις σε έναν προσαρμοσμένο φάκελο και παραλείπει την προτροπή Αποθήκευση ως, επομένως τα αρχεία καταλήγουν εκεί που τα αναμένει η δοκιμή.
Χάρτης<Σπάγγος,αντικείμενο> παράμετροι = νέος HashMap<>();
params.put("συμπεριφορά", "επιτρέπω");
params.put(«Διαδρομή λήψης», “D:\\σελήνιο-λήψεις”);
driver.executeCdpCommand(«Page.setDownloadBehavior», παράμετροι).
driver.get(«https://demo.guru99.com/test/yahoo.html»);
driver.findElement(By.id()«λήψη messenger»)).κλικ();
Μπορείτε να επαληθεύσετε τη λήψη αναζητώντας στον κατάλογο προορισμού το αναμενόμενο όνομα αρχείου και ελέγχοντας το μέγεθός του, γεγονός που καθιστά τη δοκιμή ντετερμινιστική χωρίς εξωτερικά σενάρια.












