分享好友 前端技术首页 频道列表

[Selenium+Java] https://www.guru99.com/using-robot-api-selenium.html

html教程  2023-03-08 20:160

Original URL: https://www.guru99.com/using-robot-api-selenium.html

 

Why Robot Class?

In certain Selenium Automation Tests, there is a need to control keyboard or mouse to interact with OS windows like Download pop-up, Alerts, Print Pop-ups, etc. or native Operation System applications like Notepad, Skype, Calculator, etc.

Selenium Webdriver cannot handle these OS pop-ups/applications.

In Java version 1.3 Robot Class was introduced. Robot Class can handle OS pop-ups/applications.

In this tutorial, you will learn,

Benefits of Robot Class

  1. Robot Class can simulate Keyboard and Mouse Event
  2. Robot Class can help in upload/download of files when using selenium web driver
  3. Robot Class can easily be integrated with current automation framework (keyword, data-driven or hybrid)

Documentation of Robot Class

Robot Class documentation will help you to understand the basic definition, syntax and usage of all methods, and functions available in Robot Class . You can view the documentation on Official Oracle website, or you can create the documentation on your local machine.

To create the documentation on local machine, follow the steps below-

Step 1) You will find the src.zip file in JDK folder. Copy src.zip and extract the same in some other folder or directory (say D: or E: )

[Selenium+Java] https://www.guru99.com/using-robot-api-selenium.html

Step 2) Extract src folder and Navigate to (path till src folder)/src/java/awt

Step 3) Copy the current location of awt folder and open command prompt.

Step 4) In cmd, change your current directory location to awt folder and type 'javadoc *.java' as shown below

[Selenium+Java] https://www.guru99.com/using-robot-api-selenium.html

Wait a while for the system to process, once completed you will see few HTML files in awt folder.

Step 5) Open index.html

[Selenium+Java] https://www.guru99.com/using-robot-api-selenium.html

Step 6) Here's you have full documentation of awt package, from the left navigation bar click on 'Robot' hyperlink (See 1 marked in below image).

[Selenium+Java] https://www.guru99.com/using-robot-api-selenium.html

Here you can also see all the methods and interfaces of Robot Class (See 2 marked in above image).

Understanding Robot Class internal methods and usage

Robot Class methods can be used to interact with keyboard/mouse events while doing browser automation. Alternatively AutoIT can be used, but its drawback is that it generates an executable file (exe) which will only work on windows, so it is not a good option to use.

Some commonly and popular used methods of Robot Class during web automation:

  • keyPress(): Example: robot.keyPress(KeyEvent.VK_DOWN) : This method with press down arrow key of Keyboard
  • mousePress() : Example : robot.mousePress(InputEvent.BUTTON3_DOWN_MASK) : This method will press the right click of your mouse.
  • mouseMove() : Example: robot.mouseMove(point.getX(), point.getY()) : This will move mouse pointer to the specified X and Y coordinates.
  • keyRelease() : Example: robot.keyRelease(KeyEvent.VK_DOWN) : This method with release down arrow key of Keyboard
  • mouseRelease() : Example: robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK) : This method will release the right click of your mouse

Sample code to automate common use cases using Robot Class

  • Lets take example of web site http://spreadsheetpage.com/index.php/file/C35/P10/ wherein after you click on a web element (.//a[@href=contains(text(),'yearly-calendar.xls']) a O.S download pop-up appears.
  • To handle this we use Robot class (by creating an instance of Robot Class in your code say Robot robot = new Robot()) . Robot class us present in AWT package of JDK.
  • To press down arrow key of Keyboard we use (robot.keyPress(KeyEvent.VK_DOWN))
  • To press TAB key of keyboard (we use robot.keyPress(KeyEvent.VK_TAB))
  • To press Enter key we use (robot.keyPress(KeyEvent.VK_ENTER)).

Here is a sample code

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	
     }	 
 }	

Check this video to see it in action

How to execute Robot Class code using TestNG

Since, now you aware of basic methods of Robot Class so let's understand few more complex methods -

Suppose you do not want to use the click method for clicking at web element.

In such cases, you can use mouseMove method of the Robot class.

Step 1) mouseMove method takes x and y coordinates as parameters like robot.mouseMove(630, 420) where 630 indicates x-axis and 420 indicate y-axis. So, this method will move your mouse pointer from the current location to mentioned x and y intersection point.

Step 2) Next, we need to press the mouse button. We can use the method mousePress like robot.mousePress(InputEvent.BUTTON1_DOWN_MASK) .

Step 3) After press, the mouse needs to be released. We can use robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK) in order to release left click of a mouse.

Running code using testNG:

Running code using Testng requires maven dependency of testNG or referenced library of TestNG jar file.

TestNG maven dependency:

<dependency>	
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>	
  <version>6.1.1</version>	
</dependency>	

After adding maven dependency or jar file. You need to import Test annotation of testNG. Once it is all done, just Right click on the program code and click on Run As then click on TestNG… and you will find that code will start its execution using testNG API.

Here is the code

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	
    }	
}	

Check this video to see it in action

Disadvantages of Robot Class

Robot framwork has few disadvantages mentioned below:

  1. Keyword/mouse event will only works on current instance of Window. E.g. suppose a code is performing any robot class event, and during the code execution user has moved to some other screen then keyword/mouse event will occur on that screen.
  2. Most of the methods like mouseMove is screen resolution dependent so there might be a chance that code working on one machine might not work on other.

Summary

Robot class in AWT package is used to generate keyboard/mouse events to interact with OS windows and native apps.

The primary purpose of Robot is to support selenium automated tests project build in Java platform

This article is contributed by Ramandeep Singh, who is a test automation engineer at a leading MNC.

查看更多关于【html教程】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
HTML中将背景颜色渐变 html设置背景颜色渐变
通过使用 css3 渐变可以让背景两个或多个指定的颜色之间显示平稳的过渡,由于用到css3所以需要考虑下浏览器兼容问题,例如:从左到右的线性渐变,且带有透明度的样式:#grad {background: -webkit-linear-gradient(left,rgba(255,0,0,0),rgba(255,0,0,1)); /*

0评论2023-03-08625

html5 Canvas 如何自适应屏幕大小
但是这样创建出的画布不能随着浏览器窗口大小的改变而动态的改变画布的大小。而这一点往往又非常重要, 因为我们会经常改变浏览器窗口大小,不会一直保持某个固定的大小。 html代码 canvas width="300" height="300" id="myCanvas"/canvas设置样式 * {

0评论2023-03-08811

HTML的video标签,不能下载视频代码
!-- 在线视频不能下载代码 --!DOCTYPE html html headscript src="../Demo/demo/book/JQuery/jQuery v2.2.0.js"/script/headbody div style="text-align:center;"video src="../images/PreviewVideo.mp4" width="820"controls="controls&

0评论2023-03-08596

HTML特殊字符、列表、表格总结 html特殊符号对照表
        HTML实体字符  在HTML中一些特殊的字符需要用特殊的方式才能显示出来,比如小于号、版权等,  在课堂上老师教了我们一个有点意思的:空格,在教材上字符实体是“nbsp”通过老师  的演示我们发现不同的浏览器他所显示的效果不同,有的比

0评论2023-03-08521

【JavaScript】使用document.write输出覆盖HTML问题
您只能在 HTML 输出中使用 document.write。如果您在文档加载后使用该方法,会覆盖整个文档。分析HTML输出流是指当前数据形式是HTML格式的数据,这部分数据正在被导出、传输或显示,所以称为“流”。通俗的来说就是HTML文档的加载过程,如果遇到document.writ

0评论2023-03-08815

ASP.Net MVC 控制@Html.DisplayFor日期显示格式
在做一個舊表的查詢頁時,遇到一個問題:字段在db里存儲的是DATETIME,但保存的值只有日期,沒有時間數據,比如2018/2/26 0:00:00,顯示出來比較難看,當然也可以做一個ViewModel,在字段上添加Attribute定義來更改名稱和顯示名稱,如下:[Display(Name = "建

0评论2023-03-08716

html 基础代码
title淄博汉企/title/headbody bgcolor="#00CC66" topmargin="200" leftmargin="200" bottommargin="200"a name="top"/a今天br /天气nbsp;nbsp;nbsp;nbsp;nbsp;不错br /font color="#CC0000"格式控制标签br /b 文字加粗方式1\bbr /str

0评论2023-03-08466

HTML-js 压缩上传的图片方法(默认上传的是file文件)
//压缩图片方法function compressImg(file,callback){var src;var fileSize = parseFloat(parseInt(file['size'])/1024/1024).toFixed(2);var read = new FileReader();read.readAsDataURL(file);read.onload = function (e) {var img = new Image(); img.src

0评论2023-03-08909

html中使table设置固定宽度的列不改变
在开发中发现,有时设置table列的宽度,但是当页面的宽度变时,列宽还是会变,解决方法就是设置table的table-layout属性,设置成table-layout="fixed"就可以了,关于它的其他值,大家可以查查

0评论2023-03-08732

HTML Table 拼凑表格数据并支持滚动条
1 !DOCTYPE html 2 html xmlns="http://www.w3.org/1999/xhtml" 3 head 4 meta http-equiv="Content-Type" content="text/html; charset=utf-8"/ 5 title/title 6 /head 7 body 8 div style="width:600px; height:60px; overflow:scroll;

0评论2023-03-08728

html5 中meta中 content=width=device-width注意
!DOCTYPE html        html        head        meta http-equiv="content-type" content="text/html; charset=UTF-8"        meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"        sty

0评论2023-03-08540

HTML a标签 target属性作用
特殊的目标有 4 个保留的目标名称用作特殊的文档重定向操作:_blank浏览器总在一个新打开、未命名的窗口中载入目标文档。_self这个目标的值对所有没有指定目标的 a 标签是默认目标,它使得目标文档载入并显示在相同的框架或者窗口中作为源文档。这个目标是多

0评论2023-03-08328

HTML5] html和css的使用方法以及样式
第一步: 清除默认样式第二步: 划分模块第三步: 设置模块的大小以及位置第四步: 划分下一级模块html和css引入网页头像link rel="shortcut icon" href="img/...ico"css样式表的引入方式css样式表的引入方式1、外链式link href="" rel="stylesheet"2、嵌入式

0评论2023-03-08936

转载:原文http://www.cnblogs.com/gao241/p/3522143.html
shell实例手册0说明{手册制作: 雪松更新日期: 2013-12-06欢迎系统运维加入Q群: 198173206请使用"notepad++"打开此文档,"alt+0"将函数折叠后方便查阅请勿删除信息,转载请说明出处,抵制不道德行为。错误在所难免,还望指正!# shell实例手册最新下载地址:http

0评论2023-03-08722

HTML里link meta全部标签的作用
做网站建设的时候很少用到太多的标签,但是在网站运营的时候,特别是像移动互联网发展、做SEO之后我们就特别容易看到很多不常见的link标签。那么这些标签都有什么作用呢?E维科技今天来为您整理一下,欢迎其他技术大牛共同分享。HTML里link 和 meta 标签详解m

0评论2023-03-08413

MVC 自定义标签,给Html.ActionLink加上支持图片链接的功能
转载:http://blog.csdn.net/niewq/article/details/17537873Html.ActionLink只支持文字链接,现在我们利用C#的扩展方法写一个Html.ActionLinkWithImage()让其支持图片链接的功能。一、首先新建一个静态类,将命名空间在改在System.Web.Mvc下,代码如下 usin

0评论2023-03-08587

更多推荐