Selenium WebDriver的大多数行为仅实现按键或滚动滚动条。但是,我们如何实现"按下+滚动鼠标滚轮"的动作?
此外,我的目标不仅仅是放大/缩小,而且还使用鼠标滚轮动作。虽然有些问题已经通过使用"CTRL + ADD"解决了放大/缩小问题,但我的问题希望通过鼠标滚作来解决。
使用 Robot 类的 mouseWheel 方法。
示例:
import java.awt.Robot;
import java.awt.event.InputEvent;
public class Main {
public static void main(String[] args) throws Exception {
Robot robot = new Robot();
robot.mouseMove(200, 200);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.mouseWheel(-100);
}
}
从文档中:
public void mouseWheel(int wheelAmt)
在配备滚轮的鼠标上旋转滚轮。
参数:轮子
- 移动鼠标滚轮的"凹口"数量
- 负值表示向上/远离用户
- 正值表示向下/朝向用户移动。
有点晚了...
我正在通过executeScript(...)函数使用一些客户端生成的鼠标滚轮事件。
Javascript/selenium-webdriver 的例子(函数不是很完整,需要在浏览器端加载一些 jQuery):
driver.executeScript(function(domElement,count,shiftMod,ctrlMod) {
//Generate Event
var ev = $.Event('mousewheel',{
buttons: 0,
ctrlKey: ctrlMod || false,
altKey: false,
shiftKey: shiftMod || false,
deltaX: count,
deltaY: count,
});
//Trigger the Event
$(domElement).trigger(ev);
return true;
},webElement,count,shiftMod,ctrlMod);