繁体   English   中英

Selenium Actions还是Java AWT Robot?

[英]Selenium Actions or Java AWT Robot?

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

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

这些工具的工作方式存在巨大差异。 Selenium使用WebDriver API并向浏览器发送命令以执行操作(通过“JSON有线协议”)。

Java AWT Robot使用本机系统事件来控制鼠标和键盘。

如果您正在进行浏览器自动化,理想情况下,您不会使用像Robot这样的东西,因为通常selenium提供的功能绰绰有余。 虽然,有些时候有一个浏览器或本地OS弹出打开,例如,上传/下载文件-这是什么, 可以解决了机器人-虽然通常有特定的硒的解决方案/解决方法,可以帮助避免使用Robot 这些解决方法的关键思想是“因为我们无法控制弹出窗口,所以不要让它们被打开”。

例如,当您在Firefox中下载文件时,您将获得一个文件浏览器弹出窗口,建议您选择位置和文件名。 这是使用selenium无法操纵的东西。 但是,你可以做的是让Firefox知道哪些文件类型以及你想在哪里自动保存下载,而不显示弹出窗口。 请参阅Firefox中的“访问文件下载”对话框

相关话题:

机器人类

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

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

一个例子 :

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类org.openqa.selenium.interactions包中定义,是用于在使用Selenium时模拟复杂用户手势的User-Facing API Actions类允许您构建一个动作链并根据W3C规范执行基于WebDriver API 的动作链 通过Selenium 测试自动化时 ,您可以使用此类而不是直接使用键盘或鼠标。 Actions类实现了Builder Pattern ,它可以构建一个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();

我个人更喜欢动作类来做任何鼠标或键盘事件。 如果在某些环境中使用动作类存在技术故障,那么我们可以使用Robot类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM