Selenium WebDriver - 如何按住鼠标右键?

5
使用Selenium 2.0 WebDriver (Java),我需要测试一些导航(旋转,平移...)。
我需要能够按住鼠标右键并移动鼠标。
同样地,我需要能够按住鼠标中键并移动鼠标。
看起来只有左键可以实现这个功能。
Actions actions = new Actions(driver);
actions.clickAndHold().perform();

接下来的问题,我不涉及任何菜单、按钮、小部件,而是涉及到一个三维环境,就像GoogleMap一样,我需要使用鼠标中键、右键甚至滚轮模拟平移、旋转和缩放...

有什么帮助吗?

2个回答

1
你可以使用机器人类来执行相同的操作。 右键使用Button3,中键使用Button2。
右键代码:
Robot robot=new Robot();
robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);

中间按钮的代码

Robot robot=new Robot();
robot.mousePress(InputEvent.BUTTON2_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON2_DOWN_MASK);

1
机器人是邪恶的,但当没有其他办法时……使用这个解决方案,对Selenium API感到羞耻。 - Audrius Meškauskas

0
如果不是浏览器或 Windows 菜单,而是类似于 Web 上下文菜单的东西,你可以使用以下代码。这是 C# 的示例,Java 的用法应该类似。
Actions actions = new Actions(WebDriver);
actions.ContextClick(webElement)
                                               .SendKeys(Keys.Down)
                                               .SendKeys(Keys.Down)
                                               .Build()
                                               .Perform();

你可以使用actions.ClickAndHold()actions.MoveToElement()的组合来创建拖动效果,我用它们来移动门户小部件。

请告诉我你正在处理哪种类型的菜单。


谢谢你的回答。我没有在处理任何菜单、小部件或按钮。我正在处理一个类似于Google地图的3D环境视图,我需要使用鼠标右键和中键模拟平移、旋转和缩放。 - user2964961
这个并没有回答问题。contextClick()会同时发送鼠标按下和鼠标松开事件。OP只想要鼠标按下事件。看起来这个功能不能实现,你需要直接使用Mouse类。 - BadZen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接