Demanda
Como la solicitud de simulación para iniciar sesión es demasiado complicada, queremos usar Selenium para abrir Google Chrome y obtener el valor de la cookie tras iniciar sesión, y luego llevar el contenido de la cookie para solicitar la interfaz relevante del sitio web para automatizar la prueba.
Selenio
Selenium es una herramienta para pruebas de aplicaciones web. Las pruebas de Selenium se ejecutan directamente en el navegador, como si un usuario real las estuviera haciendo. Los navegadores compatibles incluyen IE (7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera, etc. Las principales características de esta herramienta incluyen: pruebas de compatibilidad de navegadores: prueba tu aplicación para ver si funciona bien en diferentes navegadores y sistemas operativos. Funcionalidad del sistema de pruebas – Crear pruebas de regresión para verificar la funcionalidad del software y los requisitos del usuario. Soporta el registro automático de acciones y la generación automática de scripts de prueba en diferentes lenguajes como .Net, Java, Perl, etc.
Primero, creemos un nuevo proyecto de consola en C# con el nombre de proyecto "chrome-cookie-demo" y la versión del .NET framework es la 4.7.2.
El comando nuget es el siguiente:
Tras la instalación de Selenium.WebDriver.ChromeDriver, se generará un archivo chromedriver.exe en el directorio de depuración del proyecto. Selenium.WebDriver se entiende como una interfaz abstracta, y luego cada navegador implementa esta interfaz por sí mismo; Selenium.WebDriver llamará a Selenium.WebDriver.ChromeDriver(chromedriver.exe), chromedriver.exe iniciará el Google Chrome instalado de forma nativa según los parámetros obtenidos y luego realizará la operación correspondiente.
Por supuesto, hay un requisito previo,El ordenador debe tener Google Chrome instalado。
El código es el siguiente:
El error es el siguiente:
System.InvalidOperationException: session not created: This version of ChromeDriver only supports Chrome version 83
Esto significa que el controlador actual no soporta la versión 83 de Google Chrome, comprueba la versión instalada en el equipo de la siguiente manera:
(Versión 71.0.3578.98)
Actualizar tu Google Chrome nativo y reiniciarlo lo solucionará (o instalar la versión del navegador que cumpla los requisitos).
Intentamos reejecutar el proyecto de demo de cookies de Chrome y descubrimos que el sitio puede abrirse normalmente, pero,La página web no está conectada。 Cuando haces clic en el navegador para abrir este sitio, el estado es iniciado en sesión.
La solución es establecer el parámetro user-data-dir con el siguiente código:
Reiniciamos el programa y aparece el siguiente error:
Excepción no gestionada: OpenQA.Selenium.WebDriverException: argumento inválido: el directorio de datos de usuario ya está en uso, por favor especifique un valor único para --user-data-dir argumento, o no use -- user-data-dir en OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) en OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, parámetros del diccionario'2) En OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) En OpenQA.Selenium.Remote.RemoteWebDriver: ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) En OpenQA.Selenium.Chrome.ChromeDriver: ctor (servicio ChromeDriverService, opciones de ChromeOptions, comando TimeSpan Tiempo límite) En OpenQA.Selenium.Chrome.ChromeDriver: ctor (servicio ChromeDriverService, opciones de ChromeOptions) En chrome_cookie_demo. Program.Main(String[] args) Ubicación C:\Users\itsvse_pc\source\repos\chrome-cookie-demo\chrome-cookie-demo\Program.cs: línea número 36 En términos generales, la carpeta ha estado ocupada, por favor reempláctala, la solución:Cierra tu Google Chrome abierto y usa la carpeta de datos de usuario para el programa "chrome-cookie-demo" que escribimos。
Consigue cookies web
driver.manage().getCookies(); Devolver La lista de todas las galletas driver.manage().getCookieNamed(arg0); Devuelve la cookie específica según el nombre driver.manage().addCookie(arg0); Crea y añade la galleta driver.manage().deleteCookie(arg0); Eliminar cookies específicas driver.manage().deleteCookieNamed(arg0); Eliminar la cookie específica según el nombre driver.manage().deleteAllCookies(); Elimina todas las cookies Documentación:El inicio de sesión del hipervínculo es visible.
Probamos para obtener todas las cookies web
Descubrimiento,Puedes leer la información de cookies de "HttpOnly", como se muestra en la figura siguiente:
Por supuesto, necesitamos convertir la información de las cookies en una cadena, luego simular la interfaz de envío de solicitudes y adjuntar el método para convertirla en una cadena en el código fuente.
Descarga del código fuente:
El inicio de sesión del hipervínculo es visible.
(Fin)
|