Como rolar para baixo ou para cima uma página no Selenium Webdriver

Índice:

Anonim

O que é uma barra de rolagem?

Uma barra de rolagem permite que você mova a tela na direção horizontal ou vertical se a rolagem da página atual não couber na área visível da tela. É usado para mover a janela para cima e para baixo.

O Selenium Webdriver não requer rolagem para realizar ações, pois manipula o DOM. Mas, em certas páginas da web, os elementos só se tornam visíveis depois que o usuário os acessa. Nesses casos, a rolagem pode ser necessária.

A barra de rolagem é de dois tipos: barra de rolagem horizontal e vertical , conforme mostrado na captura de tela abaixo.

Pergaminho em Selênio

Para rolar usando o Selenium, você pode usar a interface JavaScriptExecutor que ajuda a executar métodos JavaScript por meio do Selenium Webdriver

Saiba mais sobre JavaScriptExecutor

Sintaxe:

JavascriptExecutor js = (JavascriptExecutor) driver;js.executeScript (Script, Argumentos);
  • Script - este é o JavaScript que precisa ser executado.
  • Argumentos - são os argumentos do script. É opcional.

Selenium Script para rolar para baixo na página

Vamos ver a rolagem de uma página da web usando o selenium webdriver com os 3 cenários a seguir:

  • Cenário 1: Para rolar para baixo a página da web por pixel.
  • Cenário 2: Para rolar para baixo na página da web pela visibilidade do elemento.
  • Cenário 3: para rolar para baixo na página da web na parte inferior da página.
  • Cenário 4: rolagem horizontal na página da web.

Cenário 1: Para rolar para baixo a página da web por pixel.

Selenium Script

import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;public class ScrollByPixel {Driver WebDriver;@Testepublic void ByPixel () {System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = novo ChromeDriver ();JavascriptExecutor js = (JavascriptExecutor) driver;// Inicie o aplicativodriver.get ("http://demo.guru99.com/test/guru99home/");// Para maximizar a janela. Este código pode não funcionar com jars Selenium 3. Se o script falhar, você pode remover a linha abaixodriver.manage (). window (). maximize ();// Isso rolará a página para baixo em 1000 pixels verticaisjs.executeScript ("window.scrollBy (0,1000)");}}

Descrição do script : No código acima, primeiro lançamos o URL fornecido no navegador Chrome. Em seguida, role a página em 1000 pixels por meio de executeScript. Método Javascript ScrollBy () rola a página da web para o número específico de pixels.

A sintaxe dos métodos ScrollBy () é:

executeScript ("window.scrollBy (x-pixels, y-pixels)");

x-pixels é o número no eixo x, ele se move para a esquerda se o número for positivo e ele se move para a direita se o número for negativo .y-pixels é o número no eixo y, ele se move para baixo se o número for positivo e ele se move para cima se o número for negativo.

Exemplo:

js.executeScript ("window.scrollBy (0,1000)"); // Rola verticalmente para baixo em 1000 pixels 

Análise de saída: aqui está a saída ao executar o script acima.

Cenário 2: Para rolar para baixo na página da web pela visibilidade do elemento.

Selenium Script

import org.openqa.selenium.By;import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;public class ScrollByVisibleElement {Driver WebDriver;@Testepublic void ByVisibleElement () {System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");driver = novo ChromeDriver ();JavascriptExecutor js = (JavascriptExecutor) driver;// Inicie o aplicativodriver.get ("http://demo.guru99.com/test/guru99home/");// Encontre elemento por texto de link e armazene na variável "Elemento"Elemento WebElement = driver.findElement (By.linkText ("Linux"));// Isso irá rolar a página até que o elemento seja encontradojs.executeScript ("arguments [0] .scrollIntoView ();", Elemento);}}

Descrição do script: no código acima, primeiro iniciamos o url fornecido no navegador Chrome. Em seguida, role a página até que o elemento mencionado esteja visível na página atual. O método Javascript scrollIntoView () rola a página até que o elemento mencionado esteja em visualização completa:

js.executeScript ("arguments [0] .scrollIntoView ();", Elemento); 

"argumentos [0]" significa o primeiro índice da página começando em 0.

Onde um "Elemento" é o localizador na página da web.

Análise de saída: aqui está a saída ao executar o script acima.

Cenário 3: para rolar para baixo na página da web na parte inferior da página.

Selenium Script

import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;public class ScrollByPage {Driver WebDriver;@Testepublic void ByPage () {System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = novo ChromeDriver ();JavascriptExecutor js = (JavascriptExecutor) driver;// Inicie o aplicativodriver.get ("http://demo.guru99.com/test/guru99home/");// Isso irá rolar a página da web até o fim.js.executeScript ("window.scrollTo (0, document.body.scrollHeight)");}}

Descrição do script: no código acima, primeiro iniciamos o url fornecido no navegador Chrome. Em seguida, role até o final da página. O método Javascript scrollTo () rola até o final da página.

js.executeScript ("window.scrollTo (0, document.body.scrollHeight)"); 

"document.body.scrollHeight" retorna a altura completa do corpo, ou seja, página da web.

Análise de saída: aqui está a saída ao executar o script acima.

Cenário 4: rolagem horizontal na página da web.

Selenium Script

import org.openqa.selenium.By;import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;public class HorizontalScroll {Driver WebDriver;@Testepublic void ScrollHorizontally () {System.setProperty ("webdriver.chrome.driver", "E: //Selenium//Selenium_Jars//chromedriver.exe");driver = novo ChromeDriver ();JavascriptExecutor js = (JavascriptExecutor) driver;// Inicie o aplicativodriver.get ("http://demo.guru99.com/test/guru99home/scrolling.html");Elemento WebElement = driver.findElement (By.linkText ("VBScript"));// Isso irá rolar a página horizontalmente até que o elemento seja encontradojs.executeScript ("arguments [0] .scrollIntoView ();", Elemento);}}

Descrição do script: no código acima, primeiro iniciamos o url fornecido no navegador Chrome. Em seguida, role a página horizontalmente até que o elemento mencionado esteja visível na página atual. O método Javascript scrollIntoView () rola a página até que o elemento mencionado esteja em visualização completa:

js.executeScript ("arguments [0] .scrollIntoView ();", Elemento);

Análise de saída: aqui está a saída ao executar o script acima.

Resumo

  • No tutorial acima, ilustramos a rolagem da página da web por meio de diferentes cenários.
  • No primeiro cenário, mostramos a rolagem para baixo página por pixel.
  • No segundo cenário, mostramos a rolagem para baixo da página até o visível do elemento.
  • No terceiro cenário, mostramos a rolagem para baixo da página na parte inferior da página.
  • No quarto cenário, ilustrou a rolagem horizontal na página da web.