Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 177007|Odpowiedź: 27

[Źródło] .Net/C# Testy automatyczne Selenium otrzymują wartości ciasteczek

[Skopiuj link]
Opublikowano 05.07.2020 11:44:34 | | | |
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)

Wynik

Liczba uczestników1MB+1 przyczynić się+1 Zapaść powód
jgskingstone + 1 + 1 Bardzo potężne!

Zobacz wszystkie oceny





Poprzedni:EF(CodeFirst) + MySQL
Następny:Warunkowe zapytanie MSSQL WHERE ignoruje ten warunek
Opublikowano 14.05.2022 10:22:54 |
Monit:Autorzy są banowani lub usuwane treści są automatycznie blokowane
Opublikowano 14.05.2022 10:21:26 |
Monit:Autorzy są banowani lub usuwane treści są automatycznie blokowane
Opublikowano 27.11.2021 17:31:04 |

Symulacja .NET Selenium nadal jest świetna, dziękuję.
Opublikowano 05.07.2020 12:46:59 |
Wygląda dobrze
Opublikowano 18.08.2020 10:45:14 |
Nauka. Ciężko się uczyć.
Opublikowano 10.10.2020 17:34:08 |
Przyjdź i ucz się, dziękuję
Opublikowano 28.10.2020 17:26:20 |
Bardzo dobrze.  
Opublikowano 03.11.2020 00:20:29 |
Dziękuję~~ Naucz się uczyć ~~~~~~~~
Opublikowano 26.11.2020 21:26:44 |
Dzięki LZ za podzielenie się
Opublikowano 24.01.2021 03:02:19 |
Dlaczego musisz odpowiedzieć, żeby to zobaczyć?
Opublikowano 06.03.2021 20:49:30 |
1111111111111111
Opublikowano 02.05.2021 20:12:35 |
Nauka. Ciężko się uczyć.
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com