Vraag
Omdat het simulatieverzoek voor inloggen te ingewikkeld is, willen we Selenium gebruiken om Google Chrome te openen om de cookiewaarde na het inloggen te krijgen, en vervolgens de cookie-inhoud meenemen om de relevante interface van de website aan te vragen om de test te automatiseren.
Selenium
Selenium is een tool voor het testen van webapplicaties. Seleniumtests worden direct in de browser uitgevoerd, alsof een echte gebruiker het doet. Ondersteunde browsers zijn onder andere IE (7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera, enzovoort. De belangrijkste functies van deze tool zijn: Browsercompatibiliteitstesten - test je applicatie om te zien of deze goed werkt op verschillende browsers en besturingssystemen. Testsysteemfunctionaliteit – Maak regressietests om de softwarefunctionaliteit en gebruikersvereisten te verifiëren. Het ondersteunt automatische registratie van acties en automatische generatie van testscripts in verschillende talen zoals .Net, Java, Perl, enzovoort.
Laten we eerst een nieuw C#-consoleproject maken met de projectnaam "chrome-cookie-demo" en de .NET framework-versie is 4.7.2.
Het nuget-commando is als volgt:
Na de installatie van Selenium.WebDriver.ChromeDriver wordt een chromedriver.exe bestand gegenereerd in de projectdebugmap. Selenium.WebDriver wordt begrepen als een abstracte interface, en elke browser implementeert deze interface zelfstandig; Selenium.WebDriver roept Selenium.WebDriver.ChromeDriver(chromedriver.exe) aan, chromedriver.exe start de native geïnstalleerde Google Chrome volgens de verkregen parameters en voert vervolgens de bijbehorende bewerking uit.
Natuurlijk is er een vereiste,De computer moet Google Chrome geïnstalleerd hebben。
De code is als volgt:
De fout is als volgt:
System.InvalidOperationException: session not created: This version of ChromeDriver only supports Chrome version 83
Dit betekent dat de huidige driver versie 83 van Google Chrome niet ondersteunt, controleer de versie die op de machine is geïnstalleerd als volgt:
(Versie 71.0.3578.98)
Je native Google Chrome upgraden en opnieuw opstarten lost het op (of installeer de browserversie die aan de eisen voldoet).
We proberen het chrome-cookie-demo-project opnieuw uit te voeren en merken dat de site normaal geopend kan worden, maar,De webpagina is niet ingelogd。 Wanneer je op de browser klikt om deze site te openen, is de status ingelogd.
De oplossing is om de parameter-user-data-dir in te stellen met de volgende code:
We starten het programma opnieuw en krijgen de volgende foutmelding:
Onbehandelde uitzondering: OpenQA.Selenium.WebDriver Uitzondering: ongeldig argument: user data directory is al in gebruik, geef alstublieft een unieke waarde aan voor --user-data-dir argument, of gebruik -- user-data-dir op OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) bij OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary'2 parameters) In OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) In OpenQA.Selenium.Remote.RemoteWebDriver: ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) In OpenQA.Selenium.Chrome.ChromeDriver: ctor(ChromeDriverService-service, ChromeOptions-opties, TimeSpan-commandTimeout) In OpenQA.Selenium.Chrome.ChromeDriver: ctor(ChromeDriverService-service, ChromeOptions-opties) In chrome_cookie_demo. Program.Main(String[] args) Locatie C:\Users\itsvse_pc\source\repos\chrome-cookie-demo\chrome-cookie-demo\Program.cs: regelnummer 36 Grofweg is de map bezet, vervang hem alsjeblieft, de oplossing:Sluit je open Google Chrome en gebruik de map gebruikersgegevens voor het programma "chrome-cookie-demo" dat we hebben geschreven。
Haal webcookies
driver.manage().getCookies(); Stuur de lijst van alle cookies terug driver.manage().getCookieNamed(arg0); Retourneer specifieke cookie op naam driver.manage().addCookie(arg0); Maak de cookie aan en voeg het toe driver.manage().deleteCookie(arg0); Verwijder specifieke cookie driver.manage().deleteCookieNamed(arg0); Verwijder specifieke cookie volgens Naam driver.manage().deleteAllCookies(); Verwijder alle cookies Documentatie:De hyperlink-login is zichtbaar.
We testen om alle webcookies te verkrijgen
Ontdekking,Je kunt de cookie-informatie lezen op "HttpOnly", zoals getoond in de onderstaande figuur:
Natuurlijk moeten we de cookie-informatie omzetten in een string, vervolgens de request submission-interface simuleren en de methode om het te converteren koppelen aan een string in de broncode.
Broncode downloaden:
De hyperlink-login is zichtbaar.
(Einde)
|