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.