如何使用 Selenium WebDriver 中的 WebElement 坐标在网页中滚动?


我们可以使用 JavaScript Executor 使用 Selenuim WebDriver 中 webelement 的坐标滚动网页。Selenium 通过 executeScript 方法执行 JavaScript 命令。

要获取元素的唯一坐标,我们应该创建一个 Point 类的对象,该对象将存储从 getLocation 方法获取的 webelement 的位置。

然后,可以分别从 getX 和 getY 方法计算各个 x 和 y 坐标值。最后,要真正执行滚动到元素坐标,将命令 window.scrollBy(x 坐标,y 坐标) 作为参数传递给 executeScript 方法。

语法

(JavascriptExecutor)
driver).executeScript("window.scrollBy(100,150)");

此处,100 和 150 分别是 x 和 y 坐标。

示例

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.Point;
import org.openqa.selenium.JavascriptExecutor;
public class ScrollWithCodrdnts{
   public static void main(String[] args) {
      System.setProperty("webdriver.gecko.driver",
         "C:\Users\ghs6kor\Desktop\Java\geckodriver.exe");
      WebDriver driver = new FirefoxDriver();
      //implicit wait
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      //URL launch
      driver.get("https://tutorialspoint.com/index.htm");
      //identify element
      WebElement n = driver.findElement(By.linkText("Latest Courses"));

      //obtain element x, y coordinates with getLocation method
      Point p = n.getLocation();
      int X = p.getX();
      int Y = p.getY();
      //scroll with Javascript Executor
      JavascriptExecutor j = (JavascriptExecutor) driver;
      j.executeScript("window.scrollBy(" + X + ", " + Y + ");");
      System.out.println("Text is: " + n.getText());
      driver.quit();
   }
}

输出

更新日期: 06-4 月-2021

3K+ 浏览量

开启你的 职业

完成课程以获得认证

开始
广告