¿Por qué Selenium Webdriver abre una nueva ventana cada vez que ejecuta el script y cómo solucionarlo?

Cuando ejecuta su código cada vez que se crea una nueva instancia de ChromeDriver que genera una nueva sesión del navegador Chrome . Esta funcionalidad es según el diseño .

Un mejor enfoque sería invocar driver.quit()dentro del tearDown(){}método para cerrar y destruir las instancias de WebDriver y del Navegador web con gracia después de cada ejecución de Prueba de ejecución . Puede encontrar una discusión detallada aquí.

Aunque eso resolvería el problema de varias ventanas del navegador Chrome , aún no se iniciará sesión en su nueva sesión. Para iniciar sesión, debe usar un perfil de Chrome específico y almacenar las cookies y reutilizarlas más tarde. Encontrará una discusión detallada sobre cómo crear y abrir un nuevo perfil de Chrome en esta discusión.

Para usar la extensión que ha instalado necesita empacar / desempaquetarlos y usar ChromeOptionsclass.


Extensiones de Chrome

Las extensiones de Chrome se pueden empaquetar o desempaquetar. Las extensiones empaquetadas son un solo archivo con una extensión .crx. Las extensiones desempaquetadas son un directorio que contiene la extensión, incluido un manifest.jsonarchivo.

Para empacar una extensión desempaquetada, use el botón Empacar chrome://extensionso use Chrome (ejemplo de Windows):

chrome.exe --pack-extension=C:\path\to\unpacked\extension --pack-extension-key=C:\myext.pem 

Consulte los documentos de extensiones para conocer otras formas de hacerlo que son más amigables con la automatización. Para desempaquetar una extensión para llevar, simplemente descomprimir el archivo (puede que tenga que cambiar el nombre del archivo del .crxque .zippara su utilidad de compresión para reconocerlo).

Usar extensiones a través de ChromeDriver

  • Empaquetado (archivo .crx):

    ChromeOptions options = new ChromeOptions();
    options.addExtensions(new File("/path/to/extension.crx"));
    WebDriver driver = new ChromeDriver(options);
    
  • Desempaquetado (directorio):

    ChromeOptions options = new ChromeOptions();
    options.addArguments("load-extension=/path/to/extension");
    WebDriver driver = new ChromeDriver(options);
    
Respuesta 1

Recibo este error al agregar botones a una barra de herramientas Excepción en el hilo "AWT-EventQueue-0" java.lang.ClassCastException: Sketcher.SketcherFrame $ ColorAction no se puede lanzar a javax.swing.Icon ...

Spring docs dice que es necesario configurar el cliente http para WebClient manualmente para establecer tiempos de espera: https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#webflux-client-. ..

Soy un desarrollador de PHP pero estoy haciendo la transición a Java. (muy nuevo en Java en este momento) ¿Hay alguna manera de hacer una llamada ajax a un Servlet y responder con la salida de un archivo .jsp separado (en lugar de ...

Estoy trabajando en una función de filtro que puede filtrar con muchos parámetros y para ello estoy usando Java Streams. Ese es mi código: filtro de vacío público (String cours, String prof, String salle, String ...