Sådan ruller du ned eller op på siden Selenium Webdriver
Rul ind Selenium
For at rulle vha Selenium, Kan du bruge JavaScriptExecutor-grænseflade, der hjælper med at udføre JavaScript metoder igennem Selenium Webdriver
Syntaks:
JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript(Script,Arguments);
- Script - Dette er JavaScript, der skal udføres.
- Argumenter - Det er argumenterne til manuskriptet. Det er valgfrit.
Selenium Script til at rulle ned på siden
Lad os se rulle ned en webside ved hjælp af selen webdriver med følgende 4 scenarier:
- Scenarie 1: For at rulle ned på websiden for pixel.
- Scenarie 2: For at rulle ned på websiden efter elementets synlighed.
- Scenario 3: For at rulle ned på websiden nederst på siden.
- Scenarie 4: Vandret rulning på websiden.
Scenarie 1: For at rulle ned på websiden for 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 Description: I ovenstående kode starter vi først den givne URL i Chrome-browseren. Rul derefter siden 1000 pixels gennem executeScript. Javascript metode ScrollBy() ruller websiden til det specifikke antal pixels.
Syntaksen for ScrollBy() metoder er:
executeScript("window.scrollBy(x-pixels,y-pixels)");
x-pixels er tallet på x-aksen, det flytter til venstre, hvis tallet er positivt, og det flyttes til højre, hvis tallet er negativt. y-pixels er tallet på y-aksen, det flytter ned, hvis tallet er positiv, og den flyttes til op, hvis tallet er negativt.
Eksempel:
js.executeScript("window.scrollBy(0,1000)"); //Scroll vertically down by 1000 pixels
Output analyse: Her er outputtet, når du udfører ovenstående script.
Scenarie 2: For at rulle ned på websiden efter elementets synlighed.
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 Description: I ovenstående kode starter vi først den givne url i Chrome-browseren. Dernæst scroller du på siden, indtil det nævnte element er synligt på den aktuelle side. Javascript metode scrollIntoView() ruller siden indtil det nævnte element er i fuld visning:
js.executeScript("arguments[0].scrollIntoView();",Element );
"argumenter[0]" betyder det første indeks på siden, der starter ved 0.
Hvor et " Element " er lokalisatoren på websiden.
Output analyse: Her er outputtet, når du udfører ovenstående script.
Scenario 3: For at rulle ned på websiden nederst på siden.
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 Description: I ovenstående kode starter vi først den givne url i Chrome-browseren. Rul derefter til bunden af siden. Javascript metode scrollTo() scroll indtil slutningen af siden.
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
"document.body.scrollHeight" returnerer den fulde højde af kroppen, dvs. websiden.
Output analyse: Her er outputtet, når du udfører ovenstående script.
Scenarie 4: Vandret rulning på websiden
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 Description: I ovenstående kode starter vi først den givne url i Chrome-browseren. Rul derefter siden vandret, indtil det nævnte element er synligt på den aktuelle side. Javascript metode scrollIntoView() ruller siden indtil det nævnte element er i fuld visning:
js.executeScript("arguments[0].scrollIntoView();",Element );
Output analyse: Her er outputtet, når du udfører ovenstående script.
Lær mere om JavaScriptExecutor
Hvad er en rullebjælke?
En rullepanel er en lader dig flytte rundt på skærmen i vandret eller lodret retning, hvis den aktuelle siderulle ikke passer til det synlige område af skærmen. Det bruges til at flytte vinduet op og ned.
Selenium Webdriver kræver ikke scroll for at udføre handlinger, da det manipulerer DOM. Men på visse websider bliver elementer først synlige, når brugeren har scrollet til dem. I sådanne tilfælde kan det være nødvendigt at rulle.
Rullebjælken er af to typer: Vandret og lodret rullepanel som vist på skærmbilledet nedenfor.
Resumé
- I ovenstående vejledning illustrerer vi rullen på websiden gennem forskellige scenarier.
- I det første scenarie viste vi rullen ned på side for pixel.
- I det andet scenarie viste vi rullen ned på siden, indtil elementet var synligt.
- I det tredje scenarie viste vi rullen ned på siden nederst på siden.
- I det fjerde scenarie, illustreret den vandrette rulle på websiden.