Cerere
Deoarece cererea de simulare pentru autentificare este prea complicată, vrem să folosim Selenium pentru a deschide Google Chrome și a obține valoarea cookie-ului după autentificare, apoi să transportăm conținutul cookie-urilor pentru a solicita interfața relevantă a site-ului pentru a automatiza testul.
Seleniu
Selenium este un instrument pentru testarea aplicațiilor web. Testele Selenium rulează direct în browser, ca și cum ar face un utilizator real. Browserele suportate includ IE (7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera etc. Principalele funcții ale acestui instrument includ: Testarea compatibilității browserelor - testează aplicația ta pentru a vedea dacă funcționează bine pe diferite browsere și sisteme de operare. Funcționalitatea sistemului de testare – Creează teste de regresie pentru a verifica funcționalitatea software-ului și cerințele utilizatorului. Suportă înregistrarea automată a acțiunilor și generarea automată a scripturilor de testare în diferite limbaje precum .Net, Java, Perl etc.
Mai întâi, să creăm un nou proiect de consolă C# cu numele "chrome-cookie-demo", iar versiunea .NET framework este 4.7.2.
Comanda nuget este următoarea:
După instalarea Selenium.WebDriver.ChromeDriver, un fișier chromedriver.exe va fi generat în directorul de depanare al proiectului. Selenium.WebDriver este înțeles ca o interfață abstractă, iar apoi fiecare browser implementează această interfață de unul singur, Selenium.WebDriver va chema Selenium.WebDriver.ChromeDriver(chromedriver.exe), chromedriver.exe va porni Google Chrome instalat nativ conform parametrilor obținuți și apoi va efectua operația corespunzătoare.
Desigur, există o condiție prealabilă,Calculatorul trebuie să aibă Google Chrome instalat。
Codul este următorul:
Eroarea este următoarea:
System.InvalidOperationException: session not created: This version of ChromeDriver only supports Chrome version 83
Aceasta înseamnă că driverul actual nu suportă versiunea 83 de Google Chrome, verifică versiunea instalată pe calculator după cum urmează:
(Versiunea 71.0.3578.98)
Upgrade-ul Google Chrome nativ și repornirea va rezolva problema (sau instalează versiunea de browser care respectă cerințele).
Încercăm să reluăm proiectul chrome-cookie-demo și descoperim că site-ul poate fi deschis normal, dar,Pagina web nu este autentifică。 Când dai click pe browser pentru a deschide acest site, starea este autentificată.
Soluția este să se seteze parametrul user-data-dir cu următorul cod:
Repornim programul și primim următoarea eroare:
Excepție negestionată: OpenQA.Selenium.WebDriverException: argument invalid: user-data directory este deja folosită, vă rugăm să specificați o valoare unică pentru argumentul --user-data-dir, sau nu folosiți -- user-data-dir la OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Răspuns eroareRăspuns) la OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, parametri Dictionary'2) În OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) În OpenQA.Selenium.Remote.RemoteWebDriver: ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) În OpenQA.Selenium.Chrome.ChromeDriver: ctor (serviciul ChromeDriverService, opțiuni ChromeOptions, TimeSpan commandTimeout) În OpenQA.Selenium.Chrome.ChromeDriver: ctor (serviciul ChromeDriverService, opțiuni ChromeOptions) În chrome_cookie_demo. Program.Main(String[] args) Locație C:\Users\itsvse_pc\source\repos\chrome-cookie-demo\chrome-cookie-demo\Program.cs: linia numărul 36 Pe scurt, folderul a fost ocupat, vă rugăm să-l înlocuiți, soluția:Închide Google Chrome deschis și folosește folderul de date utilizator pentru programul "chrome-cookie-demo" pe care l-am scris。
Obține cookie-uri web
driver.manage().getCookies(); Returnează lista tuturor cookie-urilor driver.manage().getCookieNamed(arg0); Returnează cookie-ul specific după nume driver.manage().addCookie(arg0); Creează și adaugă cookie-ul driver.manage().deleteCookie(arg0); Șterge cookie-ul specific driver.manage().deleteCookieNamed(arg0); Șterge cookie-ul specific în funcție de Nume driver.manage().deleteAllCookies(); Șterge toate cookie-urile Documentație:Autentificarea cu hyperlink este vizibilă.
Testăm pentru a obține toate cookie-urile web
Descoperire,Poți citi informațiile despre cookie-uri din "HttpOnly", așa cum se arată în figura de mai jos:
Desigur, trebuie să convertim informațiile cookie-urilor într-un șir, apoi să simulăm interfața de trimitere a cererilor și să atașezăm metoda de conversie în șirul în codul sursă.
Descărcare cod sursă:
Autentificarea cu hyperlink este vizibilă.
(Sfârșit)
|