Ζήτηση
Δεδομένου ότι το αίτημα προσομοίωσης για σύνδεση είναι πολύ περίπλοκο, θέλουμε να χρησιμοποιήσουμε το Selenium για να ανοίξουμε το Google Chrome για να λάβουμε την τιμή cookie μετά τη σύνδεση και, στη συνέχεια, να μεταφέρουμε το περιεχόμενο cookie για να ζητήσουμε από τη σχετική διεπαφή του ιστότοπου να αυτοματοποιήσει τη δοκιμή.
Σελήνιο
Το σελήνιο είναι ένα εργαλείο για τη δοκιμή εφαρμογών Ιστού. Selenium Οι δοκιμές εκτελούνται απευθείας στο πρόγραμμα περιήγησης, σαν να το έκανε ένας πραγματικός χρήστης. Τα υποστηριζόμενα προγράμματα περιήγησης περιλαμβάνουν IE (7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera κ.λπ. Τα κύρια χαρακτηριστικά αυτού του εργαλείου περιλαμβάνουν: Δοκιμή συμβατότητας προγράμματος περιήγησης - δοκιμάστε την εφαρμογή σας για να δείτε εάν λειτουργεί καλά σε διαφορετικά προγράμματα περιήγησης και λειτουργικά συστήματα. Δοκιμή λειτουργικότητας συστήματος – Δημιουργήστε δοκιμές παλινδρόμησης για να επαληθεύσετε τη λειτουργικότητα του λογισμικού και τις απαιτήσεις των χρηστών. Υποστηρίζει αυτόματη καταγραφή ενεργειών και αυτόματη δημιουργία δοκιμαστικών σεναρίων σε διάφορες γλώσσες όπως .Net, Java, Perl κ.λπ.
Αρχικά, ας δημιουργήσουμε ένα νέο έργο κονσόλας C# με το όνομα έργου "chrome-cookie-demo" και η έκδοση πλαισίου .NET είναι 4.7.2.
Η εντολή nuget έχει ως εξής:
Μετά την εγκατάσταση του Selenium.WebDriver.ChromeDriver, θα δημιουργηθεί ένα αρχείο chromedriver.exe στον κατάλογο εντοπισμού σφαλμάτων του έργου. Το Selenium.WebDriver νοείται ως μια αφηρημένη διεπαφή και, στη συνέχεια, κάθε πρόγραμμα περιήγησης υλοποιεί αυτήν τη διεπαφή από μόνο του, το Selenium.WebDriver θα καλέσει το Selenium.WebDriver.ChromeDriver(chromedriver.exe), το chromedriver.exe θα ξεκινήσει το εγγενώς εγκατεστημένο Google Chrome σύμφωνα με τις ληφθείσες παραμέτρους και, στη συνέχεια, θα εκτελέσει την αντίστοιχη λειτουργία.
Φυσικά, υπάρχει μια προϋπόθεση,Ο υπολογιστής πρέπει να έχει εγκατεστημένο το Google Chrome。
Ο κωδικός έχει ως εξής:
Το σφάλμα έχει ως εξής:
System.InvalidOperationException: session not created: This version of ChromeDriver only supports Chrome version 83
Αυτό σημαίνει ότι το τρέχον πρόγραμμα οδήγησης δεν υποστηρίζει την έκδοση 83 του Google Chrome, ελέγξτε την έκδοση που είναι εγκατεστημένη στο μηχάνημα ως εξής:
(Έκδοση 71.0.3578.98)
Η αναβάθμιση του εγγενούς Google Chrome και η επανεκκίνηση του θα το διορθώσει (ή θα εγκαταστήσει την έκδοση του προγράμματος περιήγησης που πληροί τις απαιτήσεις).
Προσπαθούμε να εκτελέσουμε ξανά το έργο chrome-cookie-demo και διαπιστώνουμε ότι ο ιστότοπος μπορεί να ανοίξει κανονικά, αλλά,Η ιστοσελίδα δεν είναι συνδεδεμένη。 Όταν κάνετε κλικ στο πρόγραμμα περιήγησης για να ανοίξετε αυτόν τον ιστότοπο, η κατάσταση είναι συνδεδεμένη.
Η λύση είναι να ορίσετε την παράμετρο user-data-dir με τον ακόλουθο κώδικα:
Κάνουμε επανεκκίνηση του προγράμματος και λαμβάνουμε το ακόλουθο σφάλμα:
Ανεπίλυτη εξαίρεση: OpenQA.Selenium.WebDriverException: μη έγκυρο όρισμα: ο κατάλογος δεδομένων χρήστη χρησιμοποιείται ήδη, προσδιορίστε μια μοναδική τιμή για το όρισμα --user-data-dir ή μην χρησιμοποιήσετε -- user-data-dir στο OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) στο OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary'2 parameters) Σε OpenQA.Selenium.Remote.RemoteWebDriver.StartSession (ICapabilities desired Capabilities) Στο OpenQA.Selenium.Remote.RemoteWebDriver: ctor(ICommandExecutor commandExecutor, ICapabilities επιθυμητέςΔυνατότητες) Στο OpenQA.Selenium.Chrome.ChromeDriver: ctor(Υπηρεσία ChromeDriverService, επιλογές ChromeOptions, εντολή TimeSpanTimeout) Στο OpenQA.Selenium.Chrome.ChromeDriver: ctor(Υπηρεσία ChromeDriverService, επιλογές ChromeOptions) Το chrome_cookie_demo. Program.Main(String[] args) Τοποθεσία C:\Users\itsvse_pc\source\repos\chrome-cookie-demo\chrome-cookie-demo\Program.cs: αριθμός γραμμής 36 Σε γενικές γραμμές, ο φάκελος έχει καταληφθεί, αντικαταστήστε τον, η λύση:Κλείστε το ανοιχτό Google Chrome και χρησιμοποιήστε το φάκελο δεδομένων χρήστη για το πρόγραμμα "chrome-cookie-demo" που γράψαμε。
Λήψη web cookies
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 ιστού
Ανακάλυψη,Μπορείτε να διαβάσετε τις πληροφορίες cookie του "HttpOnly", όπως φαίνεται στο παρακάτω σχήμα:
Φυσικά, πρέπει να μετατρέψουμε τις πληροφορίες cookie σε συμβολοσειρά και, στη συνέχεια, να προσομοιώσουμε τη διεπαφή υποβολής αιτήματος και να επισυνάψουμε τη μέθοδο μετατροπής της σε συμβολοσειρά στον πηγαίο κώδικα.
Λήψη πηγαίου κώδικα:
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
(Τέλος)
|