1.简介
现在有些网站为了节省流量和资源,提高网页加载效率,提升用户的使用体验。采用的是动态加载(懒加载)的,也就是当拖动页面右侧滚动条后会自动加载网页下面的内容,不拖动就不会加载的或者通过鼠标滚轮操作之后才会加载网页下边的内容。相当于用鼠标点击纵向滚动条的上下小黑三角的作用,但比用鼠标滚动条方便多了。还有种情况就是屏幕大小有限,一屏根本放不下所有的网页内容,这种情况也只能通过滚动条或者滚轮来操作。今天宏哥就来讲解和说明一下,Playwright是怎么操作鼠标滚轮的。
2.wheel模拟鼠标滚动
wheel模拟鼠标滚动,就是通过调度一个wheel事件。(滚轮事件如果不处理可能会导致滚动,该方法不会等待滚动结束才返回。)语法如下:
/**
* Dispatches a {@code wheel} event.
*
* <p> <strong>NOTE:</strong> Wheel events may cause scrolling if they are not handled, and this method does not wait for the scrolling to finish
* before returning.
*
* @param deltaX Pixels to scroll horizontally.
* @param deltaY Pixels to scroll vertically.
* @since v1.15
*/
void wheel(double deltaX, double deltaY);
2.1参数详解
「参数」
| 参数 | 类型 | 释义 |
|---|---|---|
| deltaX | double | 要水平滚动的像素 |
| deltaY | double | 要垂直滚动的像素 |
2.2使用方法
Mouse.wheel(deltaX, deltaY);
3.牛刀小试
3.1测试网址
宏哥在网上查找资料,专门找了一个监听鼠标操作的网站:cps-check.com/cn/mouse-bu…
- 未按鼠标时,不会显示其他颜色
- 长按鼠标左键时,页面会显示红色的左键
- 按下鼠标左键松开时,页面会显示粉红色的左键
- 长按滚轮时,页面的鼠标滚轮显示红色
- 按下的滚轮松开时,页面的滚轮会显示粉红色
3.2测试用例及思路
1.首先访问鼠标事件检查的网站。
2.将鼠标移动到鼠标检查的位置中。
3.按一下左键测试鼠标检查事件是否正常。
4.按下滚轮开始操作,滚动一下,松开,如此循环操作。
3.3代码设计
3.4参考代码
package com.bjhg.playwright;
import com.microsoft.playwright.*;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)
*
* 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-44-模拟操作鼠标滚轮(详细教程)
*
* 2026年03月26日
*/
public class Test_Wheel {
public static void main(String[] args) {
// TODO Auto-generated method stub
try (Playwright playwright = Playwright.create()) {
//1.使用chromium浏览器,# 浏览器配置,设置以GUI模式启动Chrome浏览器(要查看浏览器UI,在启动浏览器时传递 headless=false 标志。您还可以使用 slowMo 来减慢执行速度。
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(300));
//2.创建context
BrowserContext context = browser.newContext();
//创建page
Page page = context.newPage();
page.screenshot();
//3.浏览器访问demo
page.navigate("http://cps-check.com/cn/mouse-buttons-test");
Thread.sleep(1000);
//4.将鼠标移到测试框内
page.mouse().move(650,300);
//5.按下左键并释放
page.mouse().down();
page.mouse().up();
//4.将鼠标滚轮滚动
for (int i = 0; i < 10; i++) {
//5. wheel模拟鼠标滚动
page.mouse().wheel(0, 150);
Thread.sleep(300);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Thread.sleep(3000);
System.out.println("Test Pass");
//6.关闭page
page.close();
//7.关闭browser
browser.close();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3.5运行代码
1.运行代码,右键Run As->Java Application,就可以看到控制台输出,如下图所示:
2.运行代码后电脑端的浏览器的动作(鼠标事件检查网站,先按左键【按下变红释放变浅】,后按滚轮开始滚动【滚轮像红色的小灯泡忽亮忽暗】)。如下图所示:
4.项目实战
上边可以清楚的看到滚轮在滚动,那么就趁热打铁宏哥这里就用菜鸟教程的网站进行讲解和演示:一边模拟鼠标滚轮滚动一边加载网页内容。
4.1.代码设计
4.2参考代码
package com.bjhg.playwright;
import com.microsoft.playwright.*;
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)
*
* 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-44-模拟操作鼠标滚轮(详细教程)
*
* 2026年03月26日
*/
public class Test_Mouse {
public static void main(String[] args) {
// TODO Auto-generated method stub
try (Playwright playwright = Playwright.create()) {
//1.使用chromium浏览器,# 浏览器配置,设置以GUI模式启动Chrome浏览器(要查看浏览器UI,在启动浏览器时传递 headless=false 标志。您还可以使用 slowMo 来减慢执行速度。
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(300));
//2.创建context
BrowserContext context = browser.newContext();
//创建page
Page page = context.newPage();
page.screenshot();
//3.浏览器访问demo
page.navigate("https://www.runoob.com");
Thread.sleep(1000);
//4.将鼠标滚轮滚动
for (int i = 0; i < 50; i++) {
//5. wheel模拟鼠标滚动
page.mouse().wheel(0, 150);
Thread.sleep(300);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Thread.sleep(3000);
System.out.println("Test Pass");
//6.关闭page
page.close();
//7.关闭browser
browser.close();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4.3运行代码
1.运行代码,右键Run As->Java Application,就可以看到控制台输出,如下图所示:
2.运行代码后电脑端的浏览器的动作(访问菜鸟网站,按照给定的像素,匀速滚动鼠标滚轮,滚动条向下移动,网页慢慢向上移动)。如下图所示:
5.小结
好了,今天时间也不早了,宏哥就讲解和分享到这里,感谢您耐心的阅读,希望对您有所帮助。