ti-enxame.com

O zoom da web do Selenium aumenta/diminui o conteúdo da página

Como alterar o nível de zoom da página no driver da web Selenium? Eu tentei: 

driver.Keyboard().pressKey(Keys.Control);
driver.Keyboard().pressKey(Keys.Add);

Mas isso não funciona.

19
user2099471

Tenha em atenção que o Selenium assume que o nível de zoom é de 100%! Por exemplo, IE se recusará a iniciar (gera uma exceção) quando o nível de zoom é diferente, porque a localização do elemento depende disso e se você alterou o nível de zoom, ele clicaria nos elementos errados, no erro locais.


Java

Você pode usar o método Keys.chord() :

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

Use com cautela e, quando terminar, redefina o zoom de volta para 100%:

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

C #

(desde que percebi que as ligações C # não possuem o método Keys.chord())

Ou, você pode usar o Advanced User Interactions API assim (novamente, o código Java, mas deve funcionar o mesmo em C #):

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

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

Novamente, não esqueça de redefinir o zoom depois:

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

Note que a abordagem ingênua

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

não funciona, porque o Ctrl chave é liberada neste método sendKeys(). O WebElementNAME __ 'S sendKeys() é diferente de aquele em Actionsname __ . Por causa disso, o Keys.NULL usado na minha solução é obrigatório .

25
Petr Janeček

Zoom in | Diminuir zoom Recurso em Windows

Mais Zoom

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

Reduzir o zoom

html.sendKeys(Keys.chord(Keys.CONTROL, Keys.SUBTRACT));

Zoom in | Diminuir zoom Recurso em MAC

Mais Zoom

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

Reduzir o zoom

html.sendKeys(Keys.chord(Keys.COMMAND, Keys.SUBTRACT));
4
Prashanth Sams

Python abordagem trabalhando para mim, exceto que você tem que especificar o nível de zoom:

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

Tenha 'zoom%' = qualquer nível de zoom que você quiser. (por exemplo, '67% '). Isso funciona para o Chromedriver, que parece não aceitar os comandos send_keys.

4
Ben

Aqui estão duas maneiras de alterar o nível de zoom com Java (uma é para o Chrome e a outra é para o Firefox):


Cromada

Ao usar v̲e̲r̲s̲i̲o̲n̲ ̲3̲.̲3̲.̲1 do Selenium Java Client Driver e C̲h̲r̲o̲m̲e̲D̲r̲i̲v̲e̲r̲ ̲2̲.̲2̲8 , o seguinte funciona (onde o número entre aspas simples representa o nível de zoom a ser usado; 1 = 100%, 1,5 = 150%, etc.):

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

Raposa de fogo

O nível de zoom pode ser modificado com o seguinte:
1. O driver do cliente Java mencionado acima
2. G̲e̲c̲k̲o̲D̲r̲i̲v̲e̲r̲ ̲v̲0̲.̲1̲5̲.̲0
3. Essas classes:
Java.awt.Robot
Java.awt.event.KeyEvent

Primeiro de tudo, instancie a classe Robot:

Robot robot = new Robot();

Este código faz com que o nível de zoom seja diminuir:

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

Este código faz com que o nível de zoom seja aumentar:

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

A abordagem mais robusta

Antes de começar com o Internet Explorer e Selenium Webdriver Considere estas duas regras importantes.

  1. O nível de zoom: deve ser definido como padrão (100%) e
  2. As configurações da zona de segurança: devem ser as mesmas para todos. As configurações de segurança devem ser definidas de acordo com as permissões da sua organização.

Como definir isso?

Basta ir ao Internet Explorer, fazer as duas coisas manualmente. É isso aí. Nenhum segredo.

Faça através do seu código.

Método 1:

//Move the following line into code format
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();

capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);

System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");

WebDriver driver= new InternetExplorerDriver(capabilities);

driver.get(baseURl);

//Identify your elements and go ahead testing...

Isso definitivamente não mostrará nenhum erro e o navegador será aberto e também navegará até a URL.

MAS isso não irá identificar qualquer elemento e, portanto, você não pode prosseguir.

Por quê? Porque nós simly suprimimos o erro e pedimos IE para abrir e obter essa URL. No entanto, o Selenium identificará elementos apenas se o zoom do navegador for 100%, ou seja. padrão. Então o código final seria

Método 2 A maneira robusta e completa de prova:

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();

capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);

System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");

WebDriver driver= new InternetExplorerDriver(capabilities);

driver.get(baseURl);

driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,"0"));
//This is to set the zoom to default value
//Identify your elements and go ahead testing...

Espero que isto ajude. Deixe-me saber se mais informações são necessárias.

2
NiNa

Usando a classe Robot funcionou para mim:

for(int i=0; i<3; i++){
        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_MINUS);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyRelease(KeyEvent.VK_MINUS);
        }

isso diminuirá 3 vezes.

0
Himank Shekher

você pode usar o método "Keys.chord" para Zoom out e Zoom in

Reduzir o zoom

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

quando você terminar seu trabalho e desejar redefinir o navegador de volta para 100%, use o código abaixo Se você quiser clicar em qualquer elemento, antes de clicar em evento, você pode redefinir a janela do navegador para 100% depois Clique nisso.

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

Você pode usar o código de script Java do usuário também para Zoom OUT

 JavascriptExecutor executor = (JavascriptExecutor)driver;
 executor.executeScript("document.body.style.zoom = '110%'");
0
Ankit jain

Parece que a abordagem proposta para o C # não funciona mais.

A abordagem para o C # que funciona para mim no WebDriver versão 2.5 é:

        public void ZoomIn()
        {
             new Actions(Driver)
                .SendKeys(Keys.Control).SendKeys(Keys.Add)
                .Perform();
        }

        public void ZoomOut()
        {
            new Actions(Driver)
               .SendKeys(Keys.Control).SendKeys(Keys.Subtract)
               .Perform();
        }
0
Denis Koreyba

Eu sei que isso é tarde, mas no caso, se você não quiser usar a classe de ação (ou recebendo erros, como eu fiz), você pode usar JavaScript puro para fazer isso.

Aqui está o código

((IJavaScriptExecutor) Browser.Driver).ExecuteScript("document.body.style.zoom = '70%';");

0
Right QA

Eu estou usando o Python 3.5 .; Eu tenho o mesmo problema que você. Eu pensei que você deve usar o Chrome como navegador. 

Eu usei o PhantomJs para finalmente resolver esse problema:

from Selenium.webdriver.common.keys import Keys
from Selenium import webdriver
browser = webdriver.PhantomJS()
browser.get('http://www.*.com')
print(browser.title)
c=browser.find_element_by_tag_name("body")
c.send_keys(Keys.LEFT_CONTROL+Keys.Add)`
0
thonner

11-17-2017 Atualização

var html = page.FindElement(By.XPath("/html"));
html.SendKeys(Keys.Control + "0" + Keys.Control);
0
roncansan

Para Zoom In até 30% (ou qualquer outro valor que você deseje, mas no meu caso 30%) use

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.body.style.zoom = '30%';");
0