在平时的测试中,一些项目经常提供了快捷键,便于操作。
而webdriver只提供了modifier key,这对我们操作使用是很有限的。
通过查资料发现java中提供了Robot类,几乎可以实现平时快捷键的需求。
下面直接通过API查看Robot提供的方法:
可能我们平时用得比较多的就按下/松开某个按键,以及鼠标的操作。
下面我们结合Holmos自动化测试框架,来完成在IE下,下载Hao123桌面为例子,具体看看怎么使用:
1.新建个Page类,这里就命名为Hao123DeskPage.java,具体代码如下:
import com.holmos.webtest.element.Button;
import com.holmos.webtest.struct.Page;
public class Hao123DeskPage extends Page {
public Hao123DeskPage() {
super();
this.comment="hao123桌面";
this.init();
}
// 实例化个button按钮,并用ID定位
public Button downLoad_BT=new Button("立即下载");
{
downLoad_BT.addIDLocator("btn-down");
}
}
2.新建个Test类,这边命名为Hao123DeskPage_Test.java,具体代码如下:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import org.junit.Test;
import com.holmos.webtest.EngineType;
import com.holmos.webtest.utils.HolmosBaseUtils;
import com.holmos.webtest.utils.HolmosWindow;
public class Hao123DeskPage_Test {
public Hao123DeskPage hao123 = new Hao123DeskPage();
@Test
public void downLoadForIE() throws AWTException {
HolmosWindow.openNewWindow(EngineType.WebDriverIE, "http://www.hao123.com/desk.html");
hao123.downLoad_BT.click();// 点击立即下载按钮
HolmosBaseUtils.sleep(2000);
Robot robot = new Robot();// 实例化个Robot对象
robot.keyPress(KeyEvent.VK_ALT);// 按住Alt键
int keys=(int) new Character('S'); // 计算S的ASCII值
robot.keyPress(keys);// 通过传入ASCII指方式来按住S键
HolmosBaseUtils.sleep(2000);
robot.keyPress(keys);// 再次按住S键
robot.keyRelease(KeyEvent.VK_S);// 松开s键
robot.keyRelease(18);// 松开Alt键
}
}
注意:上面这个例子我们没有做close操作,如果你仅仅通过通过鼠标关闭浏览器的话,会发现任务管理器里面还存在IEDriverServer.exe进程需要手工关闭
我把这个操作当做了实现自动化测试下载文件时遇到的一个问题的一种解决方案。
自动化我想不应该把范围仅仅限制在测试,如果有能力应该把产品发布,环境部署等等通通用自动化去完成。
补充:
上面我们看了java中robot类实现的键盘操作,挺强大的。其实Holmos也提供了对键盘仿真操作的方法,不过它也是仅仅能对modifier key的操作。
通过查看HolmosWindows类我们可以知道,Holmos提供了如下方法:
- altKeyDown()----------------------------------------按下Alt按键,未松开前一直按着
- altKeyUp()--------------------------------------------松开Alt按键,之前就是松开则没影响
- ctrlKeyDown()---------------------------------------按下Ctrl按键,未松开前一直按着
- ctrlKeyUp()------------------------------------------ 松开Ctrl按键,之前就是松开则没影响
- metaKeyDown()-------------------------------------按下meta按键,未松开前一直按着
- metaUp()---------------------------------------------松开meta按键,之前就是松开则没影响
- KeyDown(org.openqa.selenium.Keys key)-------按下某个modifier key
- KeyUp(org.openqa.selenium.Keys key)-----------松开某个modifier key
了解了方法后,我们先来个实现下面这个case:
1.打开百度页面
2.输入:12
3.按回车键查询
4.关闭浏览器(ctrl+F4方式输入)
@Test
public void keyTest01(){
// 用chrome打开百度首页
HolmosWindow. openNewWindow(EngineType.WebDriverChrome, "http://www.baidu.com" );
HolmosWindow. KeyDown(Keys.NUMPAD1); //按下数字键1
HolmosWindow. KeyDown(Keys.NUMPAD2); //按下数字键2
HolmosWindow. KeyDown(Keys.ENTER); //按下回车键
HolmosBaseUtils. sleep(3000);// 为了看效果,我们等待3S再去关闭浏览器
HolmosWindow. ctrlKeyDown();// 按住ctrl按键
HolmosWindow. KeyDown(Keys.F4); //按下F4按键
}

本文介绍如何利用Java中的Robot类实现自动化测试中的快捷键操作,包括实例演示如何在IE浏览器中下载文件,并展示了Holmos自动化测试框架提供的键盘仿真操作方法。
864

被折叠的 条评论
为什么被折叠?



