本篇知识点:
- 模拟键盘的操作
- 模拟鼠标右键事件
- 在指定元素上方进行鼠标悬浮
- 在指定元素上进行鼠标单击左键和释放的操作
模拟键盘的操作
被测试网页的网址:http://www.sogou.com
// 模拟键盘的操作
@Test
public void clickKeys() {
driver.get("http://www.sogou.com");// 打开sogou页面,焦点会自动定位到搜索输入框
Actions actions = new Actions(driver);
actions.keyDown(Keys.CONTROL);// 按下Ctrl键
actions.keyDown(Keys.SHIFT);// 按下shift键
actions.keyDown(Keys.ALT);// 按下alt键
actions.keyUp(Keys.CONTROL);// 释放Ctrl键
actions.keyUp(Keys.SHIFT);// 释放shift键
actions.keyUp(Keys.ALT);// 释放alt键
// 模拟键盘在搜索输入框中输入大写字母"ABCDEFG"
actions.keyDown(Keys.SHIFT).sendKeys("abcdefg").perform();
}
模拟鼠标右键事件
被测试网页:http://www.baidu.com
// 模拟鼠标右键事件
@Test(enabled = false)
public void rigthClickMouse() {
driver.get("http://www.baidu.com");
Actions actions = new Actions(driver);
// 调用Action对象的contextClick方法,在ID为kw的输入框上方单击鼠标右键
// 模拟书包右键单击操作
actions.contextClick(driver.findElement(By.id("kw"))).perform();
}
在指定元素上方进行鼠标悬浮
被测试页面:http://www.baidu.com
// 在指定元素上方进行鼠标悬浮
@Test
public void roverOnElement() {
driver.get("http://www.baidu.com");
WebElement element1 = driver.findElement(By.name("tj_briicon"));
WebElement element2 = driver.findElement(By.id("kw"));
Actions actions = new Actions(driver);
/*调用Action对象的moveToElement方法,将鼠标移到name为tj_briicon的链接上方
* 此代码被调用后,可以看到百度页面,更多产品那里有显示更多产品
*/
actions.moveToElement(element1).perform();
try {
//暂停5秒看效果
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*调用Action对象的moveToElement方法,将鼠标移到name为kw的元素上方
* 此代码被调用后,可以看到百度页面,更多产品那里的显示框消失
*/
actions.moveToElement(element2).perform();
try {
//暂停5秒看效果
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
在指定元素上进行鼠标单击左键和释放的操作
被测试HTML代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function mouseDownFun(){
document.getElementById('div1').innerHTML+='鼠标左键被按下<br/>';
}
function mouseUpFun(){
document.getElementById('div1').innerHTML+='已经按下的鼠标左键被释放<br/>';
}
function clickFun(){
document.getElementById('div1').innerHTML+='单击动作已发生';
}
</script>
</head>
<body>
<div id="div1" οnmοusedοwn="mouseDownFun()" οnmοuseup="mouseUpFun()"
οnclick="clickFun();"
style="background: #ccc; border: 3px solid #999; width: 200px; height: 200px; padding: 10px">
</div>
<input style="margin-top:10px" type="button" οnclick="document.getElementById('div1').innerHTM='';" value="清除信息"/>
</body>
</html>
具体实现代码:
// 在指定元素上进行鼠标单击左键和释放的操作
@Test
public void mouseClickAnRelease() {
driver.get("file:///F:/workspace/WebDriver%20API/mouseClickAndRelease.html"); //被测试html页面路径
WebElement element = driver.findElement(By.id("div1"));
Actions actions = new Actions(driver);
// 调用Action对象的clickAndHold方法,在ID属性值为div1的元素上方单击鼠标左键并且不释放。此代码被调用后,可以看到页面打印出来的‘鼠标左键被按下’
actions.clickAndHold(element).perform();
try {
//暂停5秒,可以看到页面打印出来“鼠标左键被按下”
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 调用Action对象的clickAndHold方法,在ID属性值为div1的元素上方释放书包左键。此代码被调用后,可以看到页面打印出来的‘已经按下的鼠标左键被释放’
actions.release(element).perform();
try {
//暂停5秒,可以看到页面打印出来“已经按下的鼠标左键被释放”
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}