Java + Selenium自动化测试中,模拟鼠标滚动页面的实现办法

一、模拟滚动到最底层

1.1 使用 JavaScript 执行

java 复制代码
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class ScrollToBottom {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path_to_chromedriver");
        WebDriver driver = new ChromeDriver();
        driver.get("your_url_here");

        // 使用 JavaScript 滚动到页面底部
        ((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight);");
    }
}

1.2 循环滚动直到页面底部

java 复制代码
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class ScrollToBottom {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path_to_chromedriver");
        WebDriver driver = new ChromeDriver();
        driver.get("your_url_here");

        long lastHeight = (long) ((JavascriptExecutor) driver).executeScript("return document.body.scrollHeight");
        while (true) {
            ((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight);");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            long newHeight = (long) ((JavascriptExecutor) driver).executeScript("return document.body.scrollHeight");
            if (newHeight == lastHeight) {
                break;
            }
            lastHeight = newHeight;
        }
    }
}

1.3 使用 Actions 类模拟滚动(效果可能因浏览器而异)

java 复制代码
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class ScrollToBottom {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path_to_chromedriver");
        WebDriver driver = new ChromeDriver();
        driver.get("your_url_here");

        Actions actions = new Actions(driver);
        actions.sendKeys(Keys.PAGE_DOWN).perform();
        actions.sendKeys(Keys.PAGE_DOWN).perform();
        // 可以多次重复 PAGE_DOWN 操作,或者结合其他操作模拟滚动到底部
    }
}

二、模拟少量滚动

2.1 使用 Actions 类模拟少量滚动

java 复制代码
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class PartialScroll {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path_to_chromedriver");
        WebDriver driver = new ChromeDriver();
        driver.get("your_url_here");

        Actions actions = new Actions(driver);
        actions.sendKeys(Keys.PAGE_DOWN).perform();
        // 这是一次模拟按下 Page Down 键进行滚动

        // 可以根据需要再次执行少量滚动操作
        actions.sendKeys(Keys.ARROW_DOWN).perform();
    }
}

2.2 使用 JavaScript 进行部分滚动

java 复制代码
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class PartialScroll {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path_to_chromedriver");
        WebDriver driver = new ChromeDriver();
        driver.get("your_url_here");

        // 使用 JavaScript 滚动一小段距离
        ((JavascriptExecutor) driver).executeScript("window.scrollBy(0, 200);");
    }
}
相关推荐
写代码写到手抽筋4 小时前
5G上行DCI字段判定:端口 流数 PMI选择详解
java·算法·5g
曲幽4 小时前
FastAPI 身份验证总踩坑?这份 FastAPI Users “避坑指南”请收好
python·fastapi·web·jwt·oauth2·user·authentication
xieliyu.5 小时前
Java算法精讲:双指针(二)
java·开发语言·算法
装不满的克莱因瓶5 小时前
掌握 RNN 与 LSTM 模型结构
人工智能·python·rnn·深度学习·神经网络·ai·lstm
jeffer_liu5 小时前
Spring AI 生产级实战:裁判员
java·人工智能·后端·spring·大模型
何以解忧,唯有..5 小时前
Python包管理工具pip:从入门到精通
开发语言·python·pip
金銀銅鐵5 小时前
用 Tkinter 实现简单的猜数字游戏
后端·python
copyer_xyf6 小时前
Python 模块与包的导入导出
前端·后端·python
小bo波6 小时前
枚举实战
java·设计模式·枚举·后端开发·代码重构