Sådan ruller du ned eller op på siden Selenium Webdriver

⚡ Smart opsummering

Rulning af en side i Selenium WebDriver bruger JavascriptExecutor-grænseflade til kørsel JavaScript-scrollkommandoer, fordi WebDriver manipulerer DOM'en direkte. Fire praktiske scenarier dækker scrollning pixel for pixel, til et element, til sidens bund og vandret.

  • 📜 JavascriptUdfører: Kører JavaScript-rulningskommandoer gennem Selenium WebDriver.
  • 🔢 Rul pixel for pixel: window.scrollBy(x,y) flytter siden et bestemt antal pixels.
  • 🎯 Rul til element: scrollIntoView() ruller, indtil målelementet er fuldt synligt.
  • ⬇️ Rul ned til bunden: scrollTo med document.body.scrollHeight når sidens slutning.
  • ↔️ Vandret rulning: scrollIntoView bevæger sig også sidelæns til elementer uden for skærmen.
  • 🧭 Grundlæggende om scrollbar: Rulning viser elementer, der kun indlæses, når de vises.

Rul 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.

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.

rullebjælke

rullebjælke

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("https://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 DescriptionI ovenstående kode starter vi først den givne URL i Chrome-browseren. Rul derefter siden 1000 pixels igennem 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.

Rul ned på websiden med pixel

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("https://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.

 Rul ned på websiden efter elementets synlighed

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("https://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.

Rul ned på websiden i bunden af ​​siden

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("https://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.

Vandret rul på websiden

Lær mere om JavaScriptExecutor

Ofte Stillede Spørgsmål

Brug en negativ pixelværdi med window.scrollBy, for eksempel js.executeScript med window.scrollBy(0,-1000). Den negative y-værdi flytter siden opad, i modsætning til en positiv værdi, der ruller ned.

Ja. Du kan sende Keys.PAGE_DOWN, Keys.END eller piletaster til et element, eller bruge Actions-klassen i Selenium 4. JavascriptEksekutor er fortsat den mest fleksible mulighed.

Browsere optager kun det synlige visningsområde, så scripts ruller gennem siden, optager sektioner og sammensætter dem. Rulning udløser også lazy-loaded billeder og indhold før skærmbilledet.

Ja. AI-assistenter producerer scrollBy-, scrollIntoView- og scrollTo-uddrag fra almindelige instruktioner og forklarer pixelmatematikken. RevSe lokatorer og venteforhold, før du kører dem i din suite.

AI-drevne værktøjer registrerer, når nyt indhold stopper med at indlæse, justerer scrolldybden dynamisk og venter intelligent på elementer. Dette automatiserer test af uendelige scroll-feeds uden fastlagte pixelantal.

scrollBy flytter siden et fast antal pixels fra den aktuelle position. scrollIntoView ruller, indtil et specifikt element er synligt. Brug scrollBy til afstand og scrollIntoView til at målrette elementer.

Opsummer dette indlæg med: