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.