selenium模拟鼠标键盘(一)

鼠标点击操作

鼠标点击事件有以下几种类型:

//记得最后一定要调用perform,否则click并没有真正执行

清单 1. 鼠标左键点击

Actions action = new Actions(dr);action.click();// 鼠标左键在当前停留的位置做单击操作 
action.click(dr.findElement(element)).perform();;// 鼠标左键点击指定的元素

清单 2. 鼠标右键点击
Actions action = new Actions(dr);
action.contextClick(dr.findElement(element)).perform();// 鼠标右键点击指定的元素

清单 3. 鼠标双击操作
Actions action = new Actions(dr); 
action.doubleClick();// 鼠标在当前停留的位置做双击操作 
action.doubleClick(dr.findElement(element).perform();// 鼠标双击指定的元素

清单 4.鼠标拖拽动作(可以用来测试鼠标是否手型显示)

Actions action = new Actions(dr);
WebElement source = dr.findElement(element);
WebElement target = dr.findElement(element));
// 鼠标拖拽动作,将 source 元素拖放到 target 元素的位置。
action.dragAndDrop(source, target);
action.clickAndHold(source).moveToElement(target).perform();
action.release();

清单 5. 鼠标悬停操作(可以测试鼠标放到超链接或者按钮上字体颜色发生变化,及页面左下角显示超链接地址)
Actions action = new Actions(dr); 
action.clickAndHold();// 鼠标悬停在当前位置,既点击并且不释放
action.clickAndHold(onElement);// 鼠标悬停在 onElement 元素的位置
action.clickAndHold(onElement).perform(); //这个方法实际上是执行了两个动作,首先是鼠标移动到元素 onElement,然后再 clickAndHold, 所以这个方法也可以写成 action.moveToElement(onElement).clickAndHold()。

清单 6.鼠标释放操

Actions action = new Actions(driver);

action.release();//释放鼠标

键盘模拟操作

Actions action = new Actions(driver);

WebElement element = dr.findElement(By.id("kw"));

action.keyUp(element,Keys.SHIFT).sendKeys("222",Keys.ENTER).keyDown(Keys.SHIFT).perform();
Assert.assertTrue(element.getAttribute("value").contains("@@@"));

keyDown表示按下键盘,keyUp表示松开键盘。上述代码中先是执行keyDown,这时shift键按下后面的sendKeys内容也是在shift键按下的情况输入的,所以实际输入的是@@@

清单 8. 验证焦点显示

Actions sendKeys(keysToSend)执行完之后,焦点就不在当前元素了。所以我们可以使用sendKeys(Keys.TAB)来切换元素的焦点,从而达到选择元素的作用,这个最常用到的场景就是在用户名和密码的输入过程中。

element.sendKeys("dddd",Keys.TAB);

清单 9.修饰键方法 KeyDown(theKey)keyUp(theKey)

 Actions action = new Actions(driver);

 action.keyDown(Keys.CONTROL);// 按下 Ctrl

 action.keyDown(Keys.SHIFT);// 按下 Shift

 action.keyDown(Key.ALT);// 按下 Alt

 action.keyUp(Keys.CONTROL);// 释放 Ctrl

 action.keyUp(Keys.SHIFT);// 释放 Shift

 action.keyUp(Keys.ALT);// 释放 Alt

所以要通过 Alt+F4来关闭当前的活动窗口,可以通过下面语句来实现:action.keyDown(Keys.ALT).keyDown(Keys.F4).keyUp(Keys.ALT).perform();

而如果是对于像键盘上面的字母键 a,b,c,d...等的组合使用,可以通过以下语句实现:action.keyDown(Keys.CONTROL).sednKeys(“a”).perform();


清单 10.批量上传文件

 /**

 *

 * @Description:在百度云上测试文件批量上传功能,主要是通过循环的方式去做单一

 *的上传动作 , 登陆过程已经去掉

 */

 @Test

 public void test_mutilUploadFile() throwsException {

 System.out.println("upload start");

//获取上传控件元素

 WebElement uploadButton =driver.findElement(By.name("html5uploader"));

 //构建上传文件路径,将需要上传的文件添加到 CharSequence数组

 CharSequence[] files = new CharSequence[5];

files[0] ="C:\\test\\test1.txt";

files[1] = "C:\\test\\test2.txt";

files[2] ="C:\\test\\test3.txt";

files[3] ="C:\\test\\test4.txt";

files[4] ="C:\\test\\test5.txt";

//循环列出每支需要上传的文件路径,做单一上传动作

for(CharSequencefile: files){

      uploadButton.sendKeys(file);

}

Thread.sleep(2000);

 System.out.println("upload end");

}

当执行结束后,效果如图 1

1.批量上传文件

结束语

SeleniumWebDriver中,有了 Actions类和 Keys 枚举对键盘和鼠标的操作已经做的非常到位,再结合 Java本身 RobotKeyEvent等类的使用,基本上可以满足工作中遇到的对鼠标键盘操作的应用了。

其次要注意的地方是 WebDriver对浏览器的支持问题,Selenium WebDriver支持的浏览器非常广泛,从 IEFirefoxChrome Safari 等浏览器, WebDriver 都有相对应的实现:InterntExplorerDriverFirefoxDriverChromeDriverSafariDriverAndroidDriver IPhoneDriverHtmlUnitDriver等。根据个人的经验,Firefox以及 Chrome 浏览器对 WebDriver 的支持最好了,Firefox 搭上 Firebug 以及 Firepath, 在写脚本的过程中非常方便,而 ChromeDriver Google 公司自己支持与维护的项目。HtmlUnitDriver速度最快,一个纯 Java实现的浏览器。IE 比较慢,而且对于 Xpath 等支持不是很好。更多关于 SeleniumWebDriver的知识,大家可以从下面的链接去访问 Selenium官方文档。

js滚动

JavascriptExecutor JS=(JavascriptExecutor) driver;

Stringhigh="scroll(0,10000);";

JS.executeScript(high);

模仿键盘复制粘贴

Actions action = new Actions(dr); 
dr.findElement(By.id("kw")).sendKeys("das1111111111",Keys.ENTER);
Thread.sleep(3000);
dr.findElement(By.id("kw")).click();
action.sendKeys(Keys.CONTROL+"a").perform();
Thread.sleep(3000);
action.sendKeys(Keys.CONTROL+"c").perform();
Thread.sleep(3000);
action.sendKeys(Keys.CONTROL+"v").perform();

不知道为什么把我的代码复制到文本框?合适让我无语呢。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值