Saltar al contenido

¿Cómo manejar el diálogo de impresión en Selenium?

Tenemos el hallazgo a esta preocupación, al menos eso pensamos. Si tienes interrogantes puedes dejar un comentario y sin tardanza

Desafortunadamente, WebDriver no puede manejar estos (o cualquier otro navegador o cuadro de diálogo del sistema operativo). Además, tienden a tener un aspecto diferente en los navegadores/sistemas/configuraciones de idioma, por lo que probablemente no haya una respuesta definitiva. Deberá detectar y manejar todos los casos posibles para que funcione en todas partes. Sus opciones incluyen:

  • El Robot class, le permite “presionar” programáticamente cualquier cosa en el teclado (o hacer clic a ciegas) y, por lo tanto, deshacerse del cuadro de diálogo, por ejemplo, presionando Ingresar o Esc. Sin embargo, como se dijo anteriormente, cualquier interacción avanzada depende del sistema operativo/idioma/impresora.

    // press Escape programatically - the print dialog must have focus, obviously
    Robot r = new Robot();
    r.keyPress(KeyEvent.VK_ESCAPE);
    r.keyRelease(KeyEvent.VK_ESCAPE);
    
  • Auto It. Es un programa de Windows útil para manejar cualquier automatización a nivel de sistema. Misma dependencia que la anterior.

Eso es más o menos. Si puede evitar el cuadro de diálogo de impresión, intente tomar una captura de pantalla de la página e imprímala con las herramientas estándar de Java.

Uno PUEDE manejar el cuadro de diálogo Imprimir con Selenium en Chrome. No estoy seguro acerca de otros navegadores.

El acceso al cuadro de diálogo Imprimir se agregó en ChromeDriver-2.17. Los detalles se pueden encontrar aquí: https://bugs.chromium.org/p/chromedriver/issues/detail?id=1087

Haga clic con el botón derecho en el cuadro de diálogo Imprimir -> Inspeccionar elemento. Como resultado, el cuadro de diálogo DOM de Imprimir se abrirá en una ventana separada. Ahora puede producir localizadores para cualquier elemento en el cuadro de diálogo y usarlos en sus pruebas.

Para cerrar el cuadro de diálogo Imprimir, se puede hacer lo siguiente:

//Switch to Print dialog
Set windowHandles = driver.getWindowHandles();
if (!windowHandles.isEmpty()) 
    driver.switchTo().window((String) windowHandles.toArray()[windowHandles.size() - 1]);

//Now work with the dialog as with an ordinary page:  
driver.findElement(By.className("cancel")).click();

La respuesta de Slanec es correcta: WebDriver no tiene capacidad nativa para esto. La forma en que resolví esto en Windows es con el objeto System.Windows.Forms.SendKeys:

    SendKeys.SendWait("^p");
    System.Threading.Thread.Sleep(500);
    SendKeys.SendWait("~");

    // give it a minute to spool onto the printer
    System.Threading.Thread.Sleep(5000);

De hecho, tengo esto en un bucle imprimiendo un montón de declaraciones. Funciona de maravilla.

Tienes la posibilidad comunicar esta crónica si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *