Popyt
Ponieważ żądanie logowania przez symulację jest zbyt skomplikowane, chcemy użyć Selenium do otwarcia Google Chrome i uzyskania wartości cookie po zalogowaniu, a następnie przenieść zawartość cookie, aby poprosić o odpowiedni interfejs strony internetowej do automatyzacji testu.
Selen
Selenium to narzędzie do testowania aplikacji webowych. Testy Selenium uruchamiają się bezpośrednio w przeglądarce, jakby robił to prawdziwy użytkownik. Obsługiwane przeglądarki to IE (7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera i inne. Główne funkcje tego narzędzia to: testowanie kompatybilności przeglądarki – przetestuj aplikację, aby sprawdzić, czy działa dobrze na różnych przeglądarkach i systemach operacyjnych. Testuj funkcjonalność systemu – Tworzenie testów regresji w celu weryfikacji funkcjonalności oprogramowania i wymagań użytkowników. Obsługuje automatyczne nagrywanie akcji oraz automatyczne generowanie skryptów testowych w różnych językach, takich jak .Net, Java, Perl itd.
Najpierw stwórzmy nowy projekt konsolowy w C# o nazwie projektu "chrome-cookie-demo", a wersja frameworka .NET to 4.7.2.
Polecenie nuget wygląda następująco:
Po instalacji Selenium.WebDriver.ChromeDriver w katalogu debugowania projektu zostanie wygenerowany plik chromedriver.exe. Selenium.WebDriver jest rozumiany jako interfejs abstrakcyjny, a następnie każda przeglądarka implementuje ten interfejs samodzielnie. Selenium.WebDriver wywołuje Selenium.WebDriver.ChromeDriver(chromedriver.exe), chromedriver.exe uruchamia natywnie zainstalowany Google Chrome zgodnie z uzyskanymi parametrami, a następnie wykonuje odpowiadającą operację.
Oczywiście jest pewien warunek wstępny,Komputer musi mieć zainstalowany Google Chrome。
Kod jest następujący:
Błąd wygląda następująco:
System.InvalidOperationException: session not created: This version of ChromeDriver only supports Chrome version 83
Oznacza to, że obecny sterownik nie obsługuje wersji 83 Google Chrome, sprawdź wersję zainstalowaną na komputerze w następujący sposób:
(Wersja 71.0.3578.98)
Aktualizacja natywnego Google Chrome i ponowne uruchomienie go rozwiąże problem (lub zainstaluj wersję przeglądarki spełniającą wymagania).
Próbujemy ponownie uruchomić demo z chrome-cookie-i i okazuje się, że stronę można otworzyć normalnie, ale,Strona nie jest zalogowana。 Gdy klikniesz przeglądarkę, aby otworzyć tę stronę, status jest zalogowany.
Rozwiązaniem jest ustawienie parametru user-data-dir za pomocą następującego kodu:
Restartujemy program i pojawia się następujący błąd:
Nieobsługiwany wyjątek: OpenQA.Selenium.WebDriverWyjątek: nieprawidłowy argument: katalog danych użytkownika jest już używany, prosimy o określenie unikalnej wartości dla --argumentu user-data-dir, albo nie używać -- user-data-dir at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, parametry słownika'2) In OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) W OpenQA.Selenium.Remote.RemoteWebDriver: ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) W OpenQA.Selenium.Chrome.ChromeDriver: ctor(ChromeDriverService service, opcje ChromeOptions, TimeSpan commandTimeout) W OpenQA.Selenium.Chrome.ChromeDriver: ctor(usługa ChromeDriverService, opcje ChromeOptions) W chrome_cookie_demo. Program.Main(String[] args) Lokalizacja C:\Users\itsvse_pc\source\repos\chrome-cookie-demo\chrome-cookie-demo\Program.cs: linia numer 36 Mówiąc ogólnie, teczka została zajęta, proszę ją wymienić, rozwiązanie:Zamknij otwarty Google Chrome i użyj folderu danych użytkownika dla programu "chrome-cookie-demo", który napisałeśmy。
Pobierz ciasteczka internetowe
driver.manage().getCookies(); Zwróć listę wszystkich ciasteczek driver.manage().getCookieNamed(arg0); Zwróć konkretne ciasteczko według nazwy driver.manage().addCookie(arg0); Stwórz i dodaj ciasteczko driver.manage().deleteCookie(arg0); Usuń konkretne ciasteczko driver.manage().deleteCookieNamed(arg0); Usuń konkretne ciasteczko według nazwy driver.manage().deleteAllCookies(); Usuń wszystkie pliki cookie Dokumentacja:Logowanie do linku jest widoczne.
Testujemy, aby pobrać wszystkie pliki cookie online
Odkrycie,Możesz przeczytać informacje o plikach cookie na "HttpOnly", jak pokazano na poniższym rysunku:
Oczywiście musimy przekonwertować informacje o ciasteczku na ciąg znaków, a następnie zasymulować interfejs do przesyłania żądań i przypisać metodę konwersji do ciągu w kodzie źródłowym.
Pobranie kodu źródłowego:
Logowanie do linku jest widoczne.
(Koniec)
|