Πώς να χειρίζεστε τα cookies Selenium Πρόγραμμα οδήγησης Web
Ένα cookie HTTP αποτελείται από πληροφορίες σχετικά με τον χρήστη και τις προτιμήσεις του. Αποθηκεύει πληροφορίες χρησιμοποιώντας ένα ζεύγος κλειδιού-τιμής. Είναι ένα μικρό κομμάτι δεδομένων που αποστέλλεται από την εφαρμογή Ιστού και αποθηκεύεται στο πρόγραμμα περιήγησης Ιστού, ενώ ο χρήστης περιηγείται σε αυτόν τον ιστότοπο.
Κάντε κλικ εδώ για να μάθετε δοκιμή cookie.
Selenium Εντολές ερωτήματος για cookies
In Selenium Webdriver, μπορούμε να ρωτήσουμε και να αλληλεπιδράσουμε με τα cookies με την παρακάτω ενσωματωμένη μέθοδο:
Selenium Εντολές ερωτήματος | Παραγωγή |
---|---|
driver.manage().getCookies(); |
Επιστρέψτε τη λίστα όλων των cookies |
driver.manage().getCookieNamed(arg0); |
Επιστρέψτε συγκεκριμένο cookie σύμφωνα με το όνομα |
driver.manage().addCookie(arg0); |
Δημιουργήστε και προσθέστε το cookie |
driver.manage().deleteCookie(arg0); |
Διαγραφή συγκεκριμένου cookie |
driver.manage().deleteCookieNamed(arg0); |
Διαγραφή συγκεκριμένου cookie σύμφωνα με το Όνομα |
driver.manage().deleteAllCookies(); |
Διαγράψτε όλα τα cookies |
Γιατί να χειρίζεστε (αποδέχεστε) τα cookies Selenium?
Κάθε cookie συσχετίζεται με ένα όνομα, τιμή, τομέα, διαδρομή, λήξη και την κατάσταση του εάν είναι ασφαλές ή όχι. Προκειμένου να επικυρωθεί ένας πελάτης, ένας διακομιστής αναλύει όλες αυτές τις τιμές σε ένα cookie.
Όταν Δοκιμές μια διαδικτυακή εφαρμογή που χρησιμοποιεί πρόγραμμα οδήγησης web selenium, ίσως χρειαστεί να δημιουργήσετε, να ενημερώσετε ή να διαγράψετε ένα cookie.
Για παράδειγμα, κατά την αυτοματοποίηση της Εφαρμογής Ηλεκτρονικών Αγορών, πολλοί χρειάζεται να αυτοματοποιήσετε σενάρια δοκιμών όπως παραγγελία παραγγελίας, Προβολή καλαθιού, Πληροφορίες πληρωμής, επιβεβαίωση παραγγελίας κ.λπ.
Εάν τα cookies δεν αποθηκεύονται, θα πρέπει να εκτελείτε ενέργεια σύνδεσης κάθε φορά πριν εκτελέσετε τα παραπάνω σενάρια δοκιμών. Αυτό θα αυξήσει την προσπάθεια κωδικοποίησης και τον χρόνο εκτέλεσης.
Η λύση είναι να αποθηκεύσετε τα cookies σε ένα Αρχείο. Later, ανακτήστε τις τιμές του cookie από αυτό το αρχείο και προσθέστε σε αυτό την τρέχουσα περίοδο λειτουργίας του προγράμματος περιήγησής σας. Ως αποτέλεσμα, μπορείτε να παραλείψετε τα βήματα σύνδεσης σε κάθε Δοκιμαστική θήκη επειδή η περίοδος λειτουργίας του προγράμματος οδήγησης περιέχει αυτές τις πληροφορίες.
Ο διακομιστής εφαρμογών αντιμετωπίζει πλέον την περίοδο λειτουργίας του προγράμματος περιήγησής σας ως πιστοποιημένη ταυτότητα και σας μεταφέρει απευθείας στη διεύθυνση URL που ζητήσατε.
Πώς να χειρίζεστε τα cookies Selenium
Θα το χρησιμοποιησουμε https://demo.guru99.com/test/cookie/selenium_aut.php για το σκοπό επίδειξης μας.
Αυτή θα είναι μια διαδικασία 2 βημάτων.
Βήμα 1) Συνδεθείτε στην εφαρμογή και αποθηκεύστε το cookie ελέγχου ταυτότητας που δημιουργήθηκε.
Βήμα 2) Χρησιμοποίησε το αποθηκευμένο cookie, για να συνδεθείτε ξανά στην εφαρμογή χωρίς να χρησιμοποιήσετε το userid και τον κωδικό πρόσβασης.
Βήμα 1) Αποθήκευση πληροφοριών cookie
package CookieExample; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.util.Set; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.Cookie; public class cookieRead{ public static void main(String[] args) { WebDriver driver; System.setProperty("webdriver.chrome.driver","G:///chromedriver.exe"); driver=new ChromeDriver(); driver.get("https://demo.guru99.com/test/cookie/selenium_aut.php"); // Input Email id and Password If you are already Register driver.findElement(By.name("username")).sendKeys("abc123"); driver.findElement(By.name("password")).sendKeys("123xyz"); driver.findElement(By.name("submit")).click(); // create file named Cookies to store Login Information File file = new File("Cookies.data"); try { // Delete old file if exists file.delete(); file.createNewFile(); FileWriter fileWrite = new FileWriter(file); BufferedWriter Bwrite = new BufferedWriter(fileWrite); // loop for getting the cookie information // loop for getting the cookie information for(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(); } catch(Exception ex) { ex.printStackTrace(); } } }
Επεξήγηση κώδικα:
- Δημιουργία παρουσίας WebDriver
- Επισκεπτόμαστε τον ιστότοπο χρησιμοποιώντας το driver.get (“https://demo.guru99.com/test/cookie/selenium_aut.php”)
- Συνδεθείτε στην Εφαρμογή
- Διαβάστε τις πληροφορίες cookie χρησιμοποιώντας
driver.manage().getCookies();
- Αποθηκεύστε τις πληροφορίες cookie χρησιμοποιώντας FileWriter Class για να γράψετε ροές χαρακτήρων και BufferedWriter για να γράψετε το κείμενο σε ένα αρχείο για να το δημιουργήσετε σε ένα αρχείο Cookies.data
- Το αρχείο "Cookies.data" αποθηκεύει όλες τις πληροφορίες cookies μαζί με το "Όνομα, Τιμή, Τομέας, Διαδρομή". Μπορούμε να ανακτήσουμε αυτές τις πληροφορίες και να συνδεθούμε στην εφαρμογή χωρίς να εισάγουμε τα διαπιστευτήρια σύνδεσης.
- Μόλις εκτελέσετε τον παραπάνω κώδικα, το αρχείο Cookie.data δημιουργείται στη δομή του φακέλου του έργου όπως φαίνεται στην παρακάτω οθόνη. Ανοίξτε το αρχείο Cookie.data, μπορείτε να δείτε ότι τα διαπιστευτήρια σύνδεσης του AUT είναι αποθηκευμένα στη μορφή του Cookie, δείτε την παρακάτω τονισμένη οθόνη
Βήμα 2) Χρήση αποθηκευμένου cookie για να συνδεθείτε στην εφαρμογή
Τώρα, θα έχουμε πρόσβαση στο cookie που δημιουργήθηκε στο βήμα 1 και θα χρησιμοποιήσουμε το cookie που δημιουργήθηκε για να πιστοποιήσουμε την ταυτότητα της συνεδρίας μας στην εφαρμογή
package CookieExample; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.Date; import java.util.StringTokenizer; import org.openqa.selenium.Cookie; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class CookieWrite { public static void main(String[] args){ WebDriver driver; System.setProperty("webdriver.chrome.driver","G://chromedriver.exe"); driver=new ChromeDriver(); try{ File file = new File("Cookies.data"); FileReader fileReader = new FileReader(file); BufferedReader Buffreader = new BufferedReader(fileReader); String strline; while((strline=Buffreader.readLine())!=null){ StringTokenizer token = new StringTokenizer(strline,";"); while(token.hasMoreTokens()){ String name = token.nextToken(); String value = token.nextToken(); String domain = token.nextToken(); String path = token.nextToken(); Date expiry = null; String val; if(!(val=token.nextToken()).equals("null")) { expiry = new Date(val); } Boolean isSecure = new Boolean(token.nextToken()). booleanValue(); Cookie ck = new Cookie(name,value,domain,path,expiry,isSecure); System.out.println(ck); driver.manage().addCookie(ck); // This will add the stored cookie to your current session } } }catch(Exception ex){ ex.printStackTrace(); } driver.get("https://demo.guru99.com/test/cookie/selenium_aut.php"); } }
Παραγωγή: Μεταφέρεστε απευθείας στην οθόνη επιτυχίας σύνδεσης χωρίς να εισάγετε το αναγνωριστικό χρήστη και τον κωδικό πρόσβασης
ΣΗΜΕΊΩΣΗ: Χρησιμοποιήστε σκληρή ανανέωση σε περίπτωση που δείτε τη σελίδα σύνδεσης μετά την εκτέλεση του παραπάνω σεναρίου.
Συμπέρασμα
Έτσι, μπορείτε να αποφύγετε την εισαγωγή του ονόματος χρήστη και του κωδικού πρόσβασης στο διακομιστή επικυρώνοντάς τα ξανά και ξανά για κάθε δοκιμή με τη βοήθεια Selenium Webdriver, και έτσι εξοικονομεί πολύ χρόνο.