机器人课程 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))
按 T​​AB 键 我们使用(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	
    }	
}	

观看此视频以了解其实际效果

机器人课程的好处

  1. 机器人类可以模拟键盘和鼠标事件
  2. 使用 selenium web 驱动程序时,Robot Class 可以帮助上传/下载文件
  3. Robot Class 可以轻松与当前自动化框架(关键字、数据驱动或混合)集成

机器人课程的缺点

机器人框架有以下几个缺点:

  1. 关键字/鼠标事件仅对窗口的当前实例有效。例如,假设代码正在执行任何机器人类事件,并且在代码执行期间用户已移动到其他屏幕,则关键字/鼠标事件将在该屏幕上发生。
  2. 大多数方法(例如 mouseMove)都依赖于屏幕分辨率,因此在一台机器上运行的代码可能在另一台机器上无法运行。

总结

AWT 包中的 Robot 类用于生成键盘/鼠标事件以与操作系统窗口和本机应用程序交互。

Robot的主要目的是支持Selenium自动化测试项目的构建 Java 平台

了解更多 readmore