Saltar al contenido

Selenium WebDriver acercar/alejar el contenido de la página

Mantén la atención ya que en esta crónica vas a encontrar la solución que buscas.

Solución:

¡Tenga en cuenta que Selenium asume que el nivel de zoom está al 100%! Por ejemplo, IE se negará a iniciar (arroja una excepción) cuando el nivel de zoom sea diferente, porque la ubicación del elemento depende de esto y si cambiara el nivel de zoom, haría clic en elementos incorrectos, en lugares incorrectos.


Java

Puedes usar el Keys.chord() método:

WebElement html = driver.findElement(By.tagName("html"));
html.sendKeys(Keys.chord(Keys.CONTROL, Keys.ADD));

Úselo con precaución y cuando haya terminado, restablezca el zoom al 100 %:

html.sendKeys(Keys.chord(Keys.CONTROL, "0"));

C#

(desde que me di cuenta de que los enlaces de C# no tienen el Keys.chord() método)

O bien, puede usar la API de Interacciones Avanzadas de Usuario de esta manera (nuevamente, código Java, pero debería funcionar igual en C#):

WebElement html = driver.findElement(By.tagName("html"));

new Actions(driver)
    .sendKeys(html, Keys.CONTROL, Keys.ADD, Keys.NULL)
    .perform();

Nuevamente, no olvide restablecer el zoom después:

new Actions(driver)
    .sendKeys(html, Keys.CONTROL, "0", Keys.NULL)
    .perform();

Tenga en cuenta que el enfoque ingenuo

html.sendKeys(Keys.CONTROL, Keys.ADD);

no trabajo, porque el Control key se publica en este sendKeys() método. Él WebElement‘s sendKeys() es diferente a la de Actions. Debido a esto, el Keys.NULL utilizado en mi solución es requerido.

Aquí hay dos formas en que se puede modificar el nivel de zoom con Java (uno es para Chrome y el otro es para Firefox):


Cromo

Cuando se usa v̲e̲r̲s̲i̲o̲n̲ ̲3̲.̲3̲.̲1 del Selenium Java Client Driver y C̲h̲r̲o̲m̲e̲D̲r̲i̲v̲e̲r̲ ̲2̲.̲2̲8, funciona lo siguiente (donde el número entre comillas simples representa el nivel a usar; 1 = 10.50% = 1, zoom5, etc.) :

JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("document.body.style.zoom = '1.5'");

Firefox

El nivel de zoom se puede modificar con lo siguiente:
1. El controlador de cliente de Java mencionado anteriormente
2. G̲e̲c̲k̲o̲D̲r̲i̲v̲e̲r̲ ̲v̲0̲.̲1̲5̲.̲0
3. Estas clases:
java.awt.Robot
java.awt.event.KeyEvent

En primer lugar, crea una instancia de la clase Robot:

Robot robot = new Robot();

Este código hace que el nivel de zoom disminuir:

robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_MINUS);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_MINUS);

Este código hace que el nivel de zoom incrementar:

robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_EQUALS);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_EQUALS);

El enfoque de Python funciona para mí, excepto que debe especificar el nivel de zoom:

driver.execute_script("document.body.style.zoom='zoom %'")

Tenga ‘zoom%’ = cualquier nivel de zoom que desee. (por ejemplo, ‘67%’). Esto funciona para Chromedriver, que no parece aceptar los comandos send_keys.

Reseñas y valoraciones del tutorial

Si estás de acuerdo, tienes el poder dejar una división acerca de qué te ha impresionado de este tutorial.

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



Utiliza Nuestro Buscador

Deja una respuesta

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