机器人课程 Selenium 网络驱动程序
机器人课程 Selenium?
机器人类 in Selenium 用于实现自动化测试 Java 平台。它在本机系统中生成输入事件,用于测试自动化、自运行演示和其他用户需要控制鼠标和键盘的应用程序。Robot 类易于实现,并且可以轻松地与自动化框架集成。
为什么选择机器人课程?
机器人类 在使用 Selenium 因为,在某些 Selenium 自动化测试,用户需要通过键盘或鼠标控制与操作系统窗口(如下载弹出窗口、打印弹出窗口等)以及本机应用程序(如记事本、计算器等)进行交互。 Selenium Webdriver 无法处理这些弹出窗口/应用程序,因此 Java 版本 1.3,引入了可以处理 OS 弹出窗口/应用程序的机器人类。
机器人课程文档
- 机器人课程文档 in Selenium 帮助用户理解机器人类中所有方法和函数的基本定义、语法和用法 Java AWT 包。用户可以查看 官方 Oracle 官网.用户还可以在本地机器上自己创建文档。
要在本地机器上创建文档,请按照以下步骤操作-
步骤1) 您将在 JDK 文件夹中找到 src.zip 文件。复制 src.zip 并将其解压到其他文件夹或目录中(例如 D: 或 E: )
步骤2) 提取 src 文件夹并导航到(到 src 文件夹的路径)/src/java/awt
步骤3) 复制 awt 文件夹的当前位置并打开命令提示符。
步骤4) 在 cmd 中,将当前目录位置更改为 awt 文件夹并输入“javadoc *.java”,如下所示
等待系统处理一段时间,完成后您将在 awt 文件夹中看到一些 HTML 文件。
步骤5) 打开 index.html
步骤6) 这里有 awt 包的完整文档,从左侧导航栏单击“机器人”超链接(参见下图中标记的 1)。
在这里您还可以看到 Robot 类的所有方法和接口(参见上图中标记的 2)。
机器人类方法 Selenium 和用法
Robot 类方法可用于在执行浏览器自动化时与键盘/鼠标事件进行交互。或者 自动IT 可以使用,但它的缺点是它会生成一个只能在 Windows 上运行的可执行文件(exe),所以不是一个好的选择。
Robot类在Web自动化过程中的一些常用和流行的方法:
方法1:keyPress():
robot.keyPress(KeyEvent.VK_DOWN): 此方法按下键盘的向下箭头键。
方法2:mousePress():
robot.mousePress(InputEvent.BUTTON3_DOWN_MASK):此方法将按下鼠标右键单击。
方法3:mouseMove():
robot.mouseMove(point.getX(), point.getY()):这会将鼠标指针移动到指定的 X 和 Y 坐标。
方法四:keyRelease():
robot.keyRelease(KeyEvent.VK_DOWN):此方法释放键盘的向下箭头键。
方法5:mouseRelease():
robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK):此方法将释放鼠标右键单击
使用 Robot Class 自动化常见用例的示例代码
- 让我们以网站 http://spreadsheetpage.com/index.php/file/C35/P10/ 为例,其中单击网页元素后(
.//a[@href=contains(text(),'yearly-calendar.xls']
)将出现操作系统下载弹出窗口。
- 为了解决这个问题,我们使用 Robot 类(通过在代码中创建 Robot 类的实例 机器人 robot = new Robot()). Robot 类位于 JDK 的 AWT 包中。
键盘按键 | 付款方式 |
---|---|
按下向下箭头键 | 我们使用(robot.keyPress(KeyEvent.VK_DOWN)) |
按 TAB 键 | 我们使用(robot.keyPress(KeyEvent.VK_TAB)) |
按 Enter 键 | 我们使用(robot.keyPress(KeyEvent.VK_ENTER)) |
机器人课程示例 Selenium
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; class Excercise1 { public static void main(String[] args) throws AWTException, InterruptedException { WebDriver driver = new FirefoxDriver(); driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url driver.findElement(By.xpath(".//a[@href=contains(text(),'yearly-calendar.xls')]")).click(); Robot robot = new Robot(); // Robot class throws AWT Exception Thread.sleep(2000); // Thread.sleep throws InterruptedException robot.keyPress(KeyEvent.VK_DOWN); // press arrow down key of keyboard to navigate and select Save radio button Thread.sleep(2000); // sleep has only been used to showcase each event separately robot.keyPress(KeyEvent.VK_TAB); Thread.sleep(2000); robot.keyPress(KeyEvent.VK_TAB); Thread.sleep(2000); robot.keyPress(KeyEvent.VK_TAB); Thread.sleep(2000); robot.keyPress(KeyEvent.VK_ENTER); // press enter key of keyboard to perform above selected action } }
观看此视频以了解其实际效果
如何使用执行 Robot 类代码 TestNG
现在您已经了解了 Robot 类的基本方法,让我们来了解一些更复杂的方法 -
假设你不想使用 click 方法 用于点击网络元素。
在这种情况下,您可以使用 Robot 类的 mouseMove 方法。
步骤1) mouseMove 方法以 x 和 y 坐标作为参数,例如 机器人.鼠标移动(630,420) 其中 630 表示 x 轴,420 表示 y 轴。因此,此方法将鼠标指针从当前位置移动到上述 x 和 y 交点。
步骤2) 接下来,我们需要按下鼠标按钮。我们可以使用方法 鼠标按下 喜欢 机器人.鼠标按下(输入事件.BUTTON1_DOWN_MASK) .
步骤3) 按下后,鼠标需要释放。我们可以使用 机器人.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) 以释放鼠标左键单击。
使用 testNG 运行代码:
使用运行代码 测试 需要 testNG 的 maven 依赖或引用的库 TestNG jar 文件。
TestNG Maven依赖:
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.1.1</version> </dependency>
添加 maven 依赖项或 jar 文件后。您需要导入 testNG 的测试注释。完成后,只需右键单击程序代码并单击 Run As,然后单击 TestNG...你会发现代码将使用 testNG API 开始执行。
这是代码
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.Test; public class Excersise1 { @Test public static void execution() throws InterruptedException, AWTException { WebDriver driver = new FirefoxDriver(); driver.manage().window().maximize(); driver.get("http://spreadsheetpage.com/index.php/file/C35/P10/"); // sample url Robot robot = new Robot(); robot.mouseMove(630, 420); // move mouse point to specific location robot.delay(1500); // delay is to make code wait for mentioned milliseconds before executing next step robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); // press left click robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); // release left click robot.delay(1500); robot.keyPress(KeyEvent.VK_DOWN); // press keyboard arrow key to select Save radio button Thread.sleep(2000); robot.keyPress(KeyEvent.VK_ENTER); // press enter key of keyboard to perform above selected action } }
观看此视频以了解其实际效果
机器人课程的好处
- 机器人类可以模拟键盘和鼠标事件
- 使用 selenium web 驱动程序时,Robot Class 可以帮助上传/下载文件
- Robot Class 可以轻松与当前自动化框架(关键字、数据驱动或混合)集成
机器人课程的缺点
机器人框架有以下几个缺点:
- 关键字/鼠标事件仅对窗口的当前实例有效。例如,假设代码正在执行任何机器人类事件,并且在代码执行期间用户已移动到其他屏幕,则关键字/鼠标事件将在该屏幕上发生。
- 大多数方法(例如 mouseMove)都依赖于屏幕分辨率,因此在一台机器上运行的代码可能在另一台机器上无法运行。
总结
AWT 包中的 Robot 类用于生成键盘/鼠标事件以与操作系统窗口和本机应用程序交互。
Robot的主要目的是支持Selenium自动化测试项目的构建 Java 平台