Como rolar a página para baixo ou para cima Selenium Driver da Web
Role para dentro Selenium
Para rolar usando Selenium, Você pode usar JavaInterface ScriptExecutor que ajuda a executar JavaMétodos de script através de Selenium Driver da Web
Sintaxe:
JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript(Script,Arguments);
- Roteiro – Este é o JavaScript que precisa ser executado.
- Argumentos – São os argumentos do script. É opcional.
Selenium Script para rolar a página para baixo
Vamos ver como rolar uma página da web usando o selenium webdriver com os seguintes 4 cenários:
- Cenário 1: Para rolar a página da web por pixel.
- Cenário 2: Para rolar a página da web pela visibilidade do elemento.
- Cenário 3: Para rolar a 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 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 { WebDriver driver; @Test public void ByPixel() { System.setProperty("webdriver.chrome.driver", "E://Selenium//Selenium_Jars//chromedriver.exe"); driver = new ChromeDriver(); JavascriptExecutor js = (JavascriptExecutor) driver; // Launch the application driver.get("http://demo.guru99.com/test/guru99home/"); //To maximize the window. This code may not work with Selenium 3 jars. If script fails you can remove the line below driver.manage().window().maximize(); // This will scroll down the page by 1000 pixel vertical js.executeScript("window.scrollBy(0,1000)"); } }
Script Descriptíon: No código acima, primeiro lançamos o URL fornecido no navegador Chrome. Em seguida, role a página 1000 pixels por meio do executeScript. Javascript O método ScrollBy() rola a página da web até um 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 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 move para cima se o número for negativo.
Exemplo:
js.executeScript("window.scrollBy(0,1000)"); //Scroll vertically down by 1000 pixels
Análise de saída: Aqui está a saída quando você executa o script acima.
Cenário 2: Para rolar a 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 { WebDriver driver; @Test public void ByVisibleElement() { System.setProperty("webdriver.chrome.driver", "G://chromedriver.exe"); driver = new ChromeDriver(); JavascriptExecutor js = (JavascriptExecutor) driver; //Launch the application driver.get("http://demo.guru99.com/test/guru99home/"); //Find element by link text and store in variable "Element" WebElement Element = driver.findElement(By.linkText("Linux")); //This will scroll the page till the element is found js.executeScript("arguments[0].scrollIntoView();", Element); } }
Script Descriptíon: No código acima, primeiro lançamos o URL fornecido no navegador Chrome. Em seguida, role a página até que o elemento mencionado esteja visível na página atual. Javascript O método scrollIntoView() rola a página até que o elemento mencionado esteja totalmente visível:
js.executeScript("arguments[0].scrollIntoView();",Element );
“argumentos[0]” significa o primeiro índice da página começando em 0.
Onde um “Elemento” é o localizador na página web.
Análise de saída: Aqui está a saída quando você executa o script acima.
Cenário 3: Para rolar a 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 { WebDriver driver; @Test public void ByPage() { System.setProperty("webdriver.chrome.driver", "E://Selenium//Selenium_Jars//chromedriver.exe"); driver = new ChromeDriver(); JavascriptExecutor js = (JavascriptExecutor) driver; // Launch the application driver.get("http://demo.guru99.com/test/guru99home/"); //This will scroll the web page till end. js.executeScript("window.scrollTo(0, document.body.scrollHeight)"); } }
Script Descriptíon: No código acima, primeiro lançamos o URL fornecido no navegador Chrome. Em seguida, role até o final da página. Javascript método 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, da página da web.
Análise de saída: Aqui está a saída quando você executa 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 { WebDriver driver; @Test public void ScrollHorizontally() { System.setProperty("webdriver.chrome.driver", "E://Selenium//Selenium_Jars//chromedriver.exe"); driver = new ChromeDriver(); JavascriptExecutor js = (JavascriptExecutor) driver; // Launch the application driver.get("http://demo.guru99.com/test/guru99home/scrolling.html"); WebElement Element = driver.findElement(By.linkText("VBScript")); //This will scroll the page Horizontally till the element is found js.executeScript("arguments[0].scrollIntoView();", Element); } }
Script Descriptíon: No código acima, primeiro lançamos o URL fornecido no navegador Chrome. Em seguida, role a página horizontalmente até que o elemento mencionado fique visível na página atual. Javascript O método scrollIntoView() rola a página até que o elemento mencionado esteja totalmente visível:
js.executeScript("arguments[0].scrollIntoView();",Element );
Análise de saída: Aqui está a saída quando você executa o script acima.
Saiba mais sobre o JavaExecutor de script
O que é uma barra de rolagem?
Uma barra de rolagem permite mover-se pela 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.
Selenium O Webdriver não requer rolagem para executar 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 rola até eles. Nesses casos, a rolagem pode ser necessária.
A barra de rolagem é de dois tipos: Horizontal e vertical barra de rolagem conforme mostrado na imagem abaixo.
Resumo
- No tutorial acima, ilustramos a rolagem da página web através de diferentes cenários.
- No primeiro cenário, mostramos a rolagem página por pixel.
- No segundo cenário, mostramos o scroll down da página até a visibilidade do elemento.
- No terceiro cenário, mostramos a rolagem da página para baixo na parte inferior da página.
- No quarto cenário, ilustrou a rolagem horizontal na página web.