Domanda
Poiché la richiesta di simulazione per il login è troppo complicata, vogliamo usare Selenium per aprire Google Chrome e ottenere il valore del cookie dopo l'accesso, e poi portare il contenuto dei cookie per richiedere l'interfaccia pertinente del sito web per automatizzare il test.
Selenio
Selenium è uno strumento per il testing di applicazioni web. I test di Selenium vengono eseguiti direttamente nel browser, come se fosse un utente reale. I browser supportati includono IE (7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera, ecc. Le principali funzionalità di questo strumento includono: Test di compatibilità con i browser - testa la tua applicazione per vedere se funziona bene su diversi browser e sistemi operativi. Funzionalità del sistema di test – Creare test di regressione per verificare la funzionalità del software e i requisiti dell'utente. Supporta la registrazione automatica delle azioni e la generazione automatica di script di test in diversi linguaggi come .Net, Java, Perl, ecc.
Per prima cosa, creiamo un nuovo progetto console C# con il nome "chrome-cookie-demo" e la versione del .NET framework è la 4.7.2.
Il comando nuget è il seguente:
Dopo l'installazione di Selenium.WebDriver.ChromeDriver, verrà generato un file chromedriver.exe nella directory di debug del progetto. Selenium.WebDriver è inteso come un'interfaccia astratta e poi ogni browser implementa questa interfaccia autonomamente, Selenium.WebDriver chiamerà Selenium.WebDriver.ChromeDriver(chromedriver.exe), chromedriver.exe avvierà il Google Chrome installato nativamente secondo i parametri ottenuti, ed eseguirà l'operazione corrispondente.
Certo, c'è un prerequisito,Il computer deve avere Google Chrome installato。
Il codice è il seguente:
L'errore è il seguente:
System.InvalidOperationException: session not created: This version of ChromeDriver only supports Chrome version 83
Questo significa che il driver attuale non supporta la versione 83 di Google Chrome, controlla la versione installata sulla macchina come segue:
(Versione 71.0.3578.98)
Aggiornare il tuo Google Chrome nativo e riavviarlo risolverà il problema (oppure installa la versione browser che soddisfa i requisiti).
Cerchiamo di riavviare il progetto demo di chrome-cookie e scopriamo che il sito può essere aperto normalmente, ma,La pagina web non è logata。 Quando clicchi sul browser per aprire questo sito, lo stato è loggato.
La soluzione è impostare il parametro user-data-dir con il seguente codice:
Riavviiamo il programma e riceviamo il seguente errore:
Eccezione non trattata: OpenQA.Selenium.WebDriverException: argomento invalido: la directory dati utente è già in uso, si prega di specificare un valore unico per --user-data-dir argomento, oppure non usare -- user-data-dir su OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Risposta erroreRisposta) su OpenQA.Selenium.Remote.RemoteWebDriver.Execute(StringdriverCommandToExecute, parametri del Dizionario'2) In OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) In OpenQA.Selenium.Remote.RemoteWebDriver: ctor(ICommandExecutor commandExecutor, ICapabilities desideratedCapabilities) In OpenQA.Selenium.Chrome.ChromeDriver: ctor(servizio ChromeDriverService, opzioni ChromeOptions, comando TimeSpan Tempoout) In OpenQA.Selenium.Chrome.ChromeDriver: ctor (servizio ChromeDriverService, opzioni ChromeOptions) A chrome_cookie_demo. Program.Main(String[] args) Posizione C:\Users\itsvse_pc\source\repos\chrome-cookie-demo\chrome-cookie-demo\Program.cs: numero riga 36 In termini generali, la cartella è stata occupata, per favore sostituiscila, la soluzione:Chiudi il Google Chrome aperto e usa la cartella dati utente per il programma "chrome-cookie-demo" che abbiamo scritto。
Ottieni cookie web
driver.manage().getCookies(); Restituisci la lista di tutti i biscotti driver.manage().getCookieNamed(arg0); Restituisci cookie specifico in base al nome driver.manage().addCookie(arg0); Crea e aggiungi il cookie driver.manage().deleteCookie(arg0); Elimina cookie specifici driver.manage().deleteCookieNamed(arg0); Elimina cookie specifico in base al Nome driver.manage().deleteAllCookies(); Elimina tutti i cookie Documentazione:Il login del link ipertestuale è visibile.
Testiamo per ottenere tutti i cookie web
Scoperta,Puoi leggere le informazioni sui cookie di "HttpOnly", come mostrato nella figura sottostante:
Ovviamente, dobbiamo convertire le informazioni sui cookie in una stringa, poi simulare l'interfaccia di invio delle richieste e aggiungere il metodo per convertirla in una stringa nel codice sorgente.
Scarica codice sorgente:
Il login del link ipertestuale è visibile.
(Fine)
|