如何使用 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(); } }
输出
广告