Selenium Actions 还是 Java AWT Robot?

5

到目前为止,我已经使用Selenium Actions库来执行自动化项目中的鼠标/键盘操作。

最近,我发现了Java AWT Robot类。它与Selenium Actions库相比如何?它们中是否有一些边角案例需要解决?限制?稳定性?性能考虑?


Java Robot类更容易处理键盘/鼠标事件。 - Ripon Al Wasim
3个回答

9
这些工具的工作方式有很大的区别。Selenium使用WebDriver API并向浏览器发送命令来执行操作(通过“JSON wire协议”)。Java AWT Robot使用本地系统事件来控制鼠标和键盘。如果您正在进行浏览器自动化,理想情况下,您不应该使用像Robot这样的东西,因为通常由selenium提供的功能已经足够了。但是,有时会出现浏览器或本机操作系统弹出窗口,例如上传/下载文件 - 这是可以通过Robot解决的事情 - 但通常有特定于selenium的解决方案/解决方法可以帮助避免使用Robot。这些解决方法的关键思想是“由于我们无法控制弹出窗口,所以不要让它们打开”。
例如,当您在Firefox中下载文件时,会弹出一个文件浏览器弹窗,建议您选择位置和文件名。这是使用selenium无法操纵的内容。但是,您可以让Firefox自动保存下载的文件类型和位置,而不显示弹窗。请参见在Firefox中访问文件下载对话框
相关主题:

感谢您的详细解释和提供的阅读材料 :) - Johnny
简而言之:Selenium通过驱动程序自动化浏览器。Java Robot通过本地事件自动化系统输入(鼠标和键盘)。 - Ponmudi VN

0

机器人类

机器人类定义在java.awt包中,属于java.desktop模块。该类用于处理与测试自动化相关的本地系统输入事件,需要控制鼠标键盘机器人类的主要目的是促进Java平台实现的自动化测试。使用机器人类生成输入事件与将事件发布到Java AWT事件队列AWT组件不同,因为使用机器人类生成的事件会在平台的本地输入队列中生成。例如,Robot.mouseMove实际上会移动鼠标光标,而不仅仅是生成鼠标移动事件

此时值得一提的是,有些平台需要特殊权限或扩展来访问低级输入控制。如果当前平台配置不允许输入控制,则尝试构建机器人对象时将抛出 AWTException 异常。例如,X-Window 系统如果不支持(或未启用)XTEST 2.2 标准扩展,则会抛出该异常。

示例:

Robot robot = new Robot();
// Press keys using robot with a gap of of 500 mili seconds is added after every key press
robot.keyPress(KeyEvent.VK_S);
Thread.sleep(500);
robot.keyPress(KeyEvent.VK_T);
Thread.sleep(500);
robot.keyPress(KeyEvent.VK_A);
Thread.sleep(500);
robot.keyPress(KeyEvent.VK_S);
Thread.sleep(500);
robot.keyPress(KeyEvent.VK_I);

Actions 类

Actions 类 定义在 org.openqa.selenium.interactions 包中,是使用 Selenium 模拟复杂用户手势的 用户界面 API。Actions 类允许您构建一个基于 WebDriver API操作链 并执行它们,遵循 W3C 规范。在通过 Selenium 进行 测试自动化 时,您可以使用此类而不是直接使用键盘或鼠标。Actions 类 实现了 Builder 模式,可以构建包含下面所述方法调用指定的所有操作的 CompositeAction

一个例子:
Actions act = new Actions(driver);
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement electronics = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li/a[@href='/electronics']")));
act.moveToElement(electronics).perform();

0

我个人更喜欢使用Actions类来执行任何鼠标或键盘事件。 如果在某些环境中使用Actions类出现技术故障,则可以使用Robot类。


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