Διαχείριση cookie στο Selenium WebDriver

Πίνακας περιεχομένων:

Anonim

Ένα cookie HTTP αποτελείται από πληροφορίες σχετικά με τον χρήστη και τις προτιμήσεις του. Αποθηκεύει πληροφορίες χρησιμοποιώντας ένα ζεύγος κλειδιού-τιμής. Πρόκειται για ένα μικρό κομμάτι δεδομένων που αποστέλλεται από την Εφαρμογή Ιστού και αποθηκεύεται στο Πρόγραμμα περιήγησης στο Web, ενώ ο χρήστης περιηγείται στον ιστότοπο

Κάντε κλικ εδώ για να μάθετε σχετικά με τη δοκιμή cookie.

Σε αυτό το σεμινάριο, θα μάθουμε -

  • Selenium Query Εντολές για cookie
  • Γιατί να χειριστείτε τα cookies στο Σελήνιο;
  • Επίδειξη: Διαχείριση cookie στο Σελήνιο.
  • Βήμα 1) Αποθήκευση πληροφοριών cookie.
  • Βήμα 2) Χρήση αποθηκευμένου cookie για σύνδεση στην εφαρμογή.

Selenium Query Εντολές για cookie

Στο Selenium Webdriver, μπορούμε να υποβάλουμε ερωτήματα και να αλληλεπιδράσουμε με cookie με την παρακάτω ενσωματωμένη μέθοδο:

driver.manage (). getCookies (); // Επιστρέψτε τη λίστα όλων των Cookiesdriver.manage (). getCookieNamed (arg0); // Επιστρέψτε συγκεκριμένο cookie σύμφωνα με το όνομαdriver.manage (). addCookie (arg0); // Δημιουργήστε και προσθέστε το cookiedriver.manage (). deleteCookie (arg0); // Διαγραφή συγκεκριμένου cookiedriver.manage (). deleteCookieNamed (arg0); // Διαγραφή συγκεκριμένου cookie σύμφωνα με το Όνομαdriver.manage (). deleteAllCookies (); // Διαγράψτε όλα τα cookie

Γιατί να χειριστείτε τα cookies στο Σελήνιο;

Κάθε cookie σχετίζεται με ένα όνομα, τιμή, τομέα, διαδρομή, λήξη και την κατάσταση του εάν είναι ασφαλές ή όχι. Προκειμένου να επικυρωθεί ένας πελάτης, ένας διακομιστής αναλύει όλες αυτές τις τιμές σε ένα cookie.

Κατά τη δοκιμή μιας εφαρμογής ιστού χρησιμοποιώντας πρόγραμμα οδήγησης ιστού σεληνίου, ίσως χρειαστεί να δημιουργήσετε, να ενημερώσετε ή να διαγράψετε ένα cookie

Για παράδειγμα, κατά την αυτοματοποίηση της Εφαρμογής διαδικτυακών αγορών, πολλοί πρέπει να αυτοματοποιήσετε σενάρια δοκιμής, όπως παραγγελία, προβολή καλαθιού, πληροφορίες πληρωμής, επιβεβαίωση παραγγελίας κ.λπ.

Εάν τα cookies δεν αποθηκεύονται, θα πρέπει να εκτελείτε ενέργεια σύνδεσης κάθε φορά πριν εκτελέσετε τα παραπάνω σενάρια δοκιμής. Αυτό θα αυξήσει την προσπάθεια κωδικοποίησης και το χρόνο εκτέλεσης.

Η λύση είναι να αποθηκεύσετε cookie σε ένα αρχείο. Αργότερα, ανακτήστε τις τιμές του cookie από αυτό το αρχείο και προσθέστε σε αυτήν την τρέχουσα περίοδο λειτουργίας του προγράμματος περιήγησης. Ως αποτέλεσμα, μπορείτε να παραλείψετε τα βήματα σύνδεσης σε κάθε δοκιμαστική υπόθεση επειδή η περίοδος λειτουργίας του προγράμματος οδήγησης περιέχει αυτές τις πληροφορίες.

Ο διακομιστής εφαρμογών αντιμετωπίζει τώρα τη συνεδρία του προγράμματος περιήγησής σας ως επικυρωμένη και σας μεταφέρει απευθείας στη διεύθυνση URL που ζητήσατε.

Επίδειξη: Διαχείριση cookie στο Σελήνιο.

Θα χρησιμοποιήσουμε το http://demo.guru99.com/test/cookie/selenium_aut.php για την επίδειξη.

Αυτή θα είναι μια διαδικασία 2 βημάτων.

Βήμα 1) Συνδεθείτε στην εφαρμογή και αποθηκεύστε το cookie ελέγχου ταυτότητας που δημιουργήθηκε.

Βήμα 2) Χρησιμοποίησε το αποθηκευμένο cookie, για να συνδεθεί ξανά στην εφαρμογή χωρίς να χρησιμοποιήσει το userid και τον κωδικό πρόσβασης.

Βήμα 1) Αποθήκευση πληροφοριών cookie.

πακέτο CookieExample;εισαγωγή java.io.BufferedWriter;εισαγωγή java.io.File;εισαγωγή java.io.FileWriter;εισαγωγή java.util.Set;εισαγωγή org.openqa.selenium.By;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;εισαγωγή org.openqa.selenium.Cookie;cookie δημόσιας τάξηςΔιαβάστε {δημόσιος στατικός κενός κενός (String [] args){Πρόγραμμα οδήγησης WebDriver;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");πρόγραμμα οδήγησης = νέο ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// Εισαγάγετε αναγνωριστικό email και κωδικό πρόσβασης Εάν είστε ήδη Εγγραφείτεdriver.findElement (By.name ("όνομα χρήστη")). sendKeys ("abc123");driver.findElement (By.name ("κωδικός πρόσβασης")). sendKeys ("123xyz");driver.findElement (By.name ("submit")). κάντε κλικ στο ();// δημιουργία αρχείου με όνομα Cookies για αποθήκευση πληροφοριών σύνδεσηςΑρχείο αρχείου = νέο αρχείο ("Cookies.data");προσπαθήστε{// Διαγράψτε το παλιό αρχείο εάν υπάρχειfile.delete ();file.createNewFile ();FileWriter fileWrite = νέο FileWriter (αρχείο);BufferedWriter Bwrite = νέο BufferedWriter (fileWrite);// βρόχος για τη λήψη των πληροφοριών cookie// βρόχος για τη λήψη των πληροφοριών cookieγια (Cookie ck: driver.manage (). getCookies ()){Bwrite.write ((ck.getName () + ";" + ck.getValue () + ";" + ck.getDomain () + ";" + ck.getPath () + ";" + ck.getExpiry () + ";" + ck.isSecure ()));Bwrite.newLine ();}Bwrite.close ();fileWrite.close ();}αλίευση (πρώην εξαίρεση){ex.printStackTrace ();}}}

Επεξήγηση κώδικα:

  • Δημιουργία παρουσίας WebDriver
  • Επισκεφτούμε τον ιστότοπο χρησιμοποιώντας το driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php")
  • Συνδεθείτε στην εφαρμογή
  • Διαβάστε τις πληροφορίες cookie χρησιμοποιώντας
    driver.manage (). getCookies (); 
  • Αποθηκεύστε τις πληροφορίες cookie χρησιμοποιώντας το ClassWriter Class για να γράψετε ροές χαρακτήρων και το BufferedWriter για να γράψετε το κείμενο σε ένα αρχείο για να δημιουργήσετε σε ένα αρχείο
  • Το αρχείο "Cookies.data" αποθηκεύει όλες τις πληροφορίες cookie μαζί με το "Όνομα, τιμή, τομέα, διαδρομή". Μπορούμε να ανακτήσουμε αυτές τις πληροφορίες και να συνδεθούμε στην εφαρμογή χωρίς να εισάγουμε τα διαπιστευτήρια σύνδεσης.
  • Μόλις εκτελέσετε τον παραπάνω κώδικα, το αρχείο Cookie.data δημιουργείται στη δομή του φακέλου έργου, όπως φαίνεται στην παρακάτω οθόνη. Ανοίξτε το αρχείο Cookie.data, μπορείτε να δείτε τα διαπιστευτήρια σύνδεσης του AUT είναι αποθηκευμένα με τη μορφή Cookie, δείτε την παρακάτω οθόνη

Βήμα 2) Χρήση αποθηκευμένου cookie για σύνδεση στην εφαρμογή.

Τώρα, θα αποκτήσουμε πρόσβαση στο cookie που δημιουργήθηκε στο βήμα 1 και θα χρησιμοποιήσουμε το cookie που δημιουργήθηκε για τον έλεγχο ταυτότητας της περιόδου σύνδεσης στην εφαρμογή

πακέτο CookieExample;εισαγωγή java.io.BufferedReader;εισαγωγή java.io.File;εισαγωγή java.io.FileReader;εισαγωγή java.util.Date;εισαγωγή java.util.StringTokenizer;εισαγωγή org.openqa.selenium.Cookie;εισαγωγή org.openqa.selenium.WebDriver;εισαγωγή org.openqa.selenium.chrome.ChromeDriver;δημόσια τάξη CookieWrite{Δημόσιο στατικό κενό (String [] args) {Πρόγραμμα οδήγησης WebDriver;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");πρόγραμμα οδήγησης = νέο ChromeDriver ();προσπαθήστε{Αρχείο αρχείου = νέο αρχείο ("Cookies.data");FileReader fileReader = νέο FileReader (αρχείο);BufferedReader Buffreader = νέο BufferedReader (fileReader);String strline;ενώ ((strline = Buffreader.readLine ())! = null) {StringTokenizer token = νέο StringTokenizer (strline, ";");ενώ (token.hasMoreTokens ()) {Όνομα συμβολοσειράς = token.nextToken ();Τιμή συμβολοσειράς = token.nextToken ();String domain = token.nextToken ();Διαδρομή συμβολοσειράς = token.nextToken ();Λήξη ημερομηνίας = null;Συμβολοσειρά val;αν (! (val = token.nextToken ()). ισούται με ("null")){λήξη = νέα ημερομηνία (val);}Boolean isSecure = νέο Boolean (token.nextToken ()).booleanValue ();Cookie ck = νέο Cookie (όνομα, τιμή, τομέας, διαδρομή, λήξη, isSecure);System.out.println (ck);driver.manage (). addCookie (ck); // Αυτό θα προσθέσει το αποθηκευμένο cookie στην τρέχουσα συνεδρία σας}}} αλίευση (εξαίρεση ex) {ex.printStackTrace ();}driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");}}

ΕΞΟΔΟΣ: Μεταφερθείτε απευθείας στην οθόνη επιτυχίας σύνδεσης χωρίς να εισαγάγετε το αναγνωριστικό χρήστη και τον κωδικό πρόσβασης

ΣΗΜΕΙΩΣΗ: Χρησιμοποιήστε σκληρή ανανέωση σε περίπτωση που δείτε τη σελίδα σύνδεσης μετά την εκτέλεση του παραπάνω σεναρίου.

συμπέρασμα

Έτσι, μπορείτε να αποφύγετε να εισάγετε το όνομα χρήστη και τον κωδικό πρόσβασης στο διακομιστή που τα επικυρώνει ξανά και ξανά για κάθε δοκιμή με τη βοήθεια του Selenium Webdriver και έτσι εξοικονομείτε πολύ χρόνο.

Αυτό το άρθρο συνεισφέρει ο Mangesh Waghmare