【selenium3+JAVA】界面自动化测试教程(十)——鼠标键盘操作

有时候在使用selenium的时候会发现无法直接点元素,比如有的选择框是在我们鼠标放置在某个位置后才会出现,如果鼠标不在那个位置,选择框是不可见的,同样就无法点击,那么这时候我们就需要进行鼠标或者键盘操作了,selenium同样提供了鼠标键盘操作的方法,如下所示:

System.setProperty("webdriver.chrome.driver", "D:\\test\\driver\\chromedriver.exe");
ChromeDriver chrome = new ChromeDriver();
Actions action = new Actions(chrome);

上面代码中那个Actions即为鼠标键盘操作类,虽然实例化的时候还有其他不同的入参,不过其他几个并不常用,所以就不介绍了;

1、鼠标操作

(1)、移动到元素(或位置)并单击

ChromeDriver chrome = new ChromeDriver();
Actions action = new Actions(chrome);
action.click(chrome.findElement(By.id("a")));//单击
action.moveToElement(chrome.findElement(By.id("a"))).click();//单击
//在当前鼠标位置移动到(300,300)坐标,鼠标默认在左上角(0,0)位置,后边可接点击等操作
action.moveByOffset(300, 300).click();
//移动鼠标到以element元素的左上角坐标为原点的偏移(300,300)坐标位置,后边可接点击等操作;
action.moveToElement(element, 300, 300).click();

(2)、移动到元素(或位置)并双击

ChromeDriver chrome = new ChromeDriver();
Actions action = new Actions(chrome);
WebElement element = chrome.findElement(By.id("a"));
action.doubleClick(element);//双击元素
action.moveToElement(element).doubleClick();//移动到元素并双击
//移动到以左上角的(0,0)作为原点的偏移(200,300)坐标位置并点击
action.moveByOffset(200, 300).click();
//移动到坐标(200,300)位置,以element的左上角作为坐标原点,并点击
action.moveToElement(element, 200, 300).click();

如上代码中两种方式效果相同

(3)、拖拽元素

如果有多次拖拽,效果没实现,那么可能是缺少休眠的原因,在每两次操作的间隙暂停几秒比较好;

ChromeDriver chrome = new ChromeDriver();
Actions action = new Actions(chrome);
WebElement element = chrome.findElement(By.id("a"));
WebElement target = chrome.findElement(By.id("b"));
//执行动作为点击element并保持,移动到target后释放,即拖拽动作
action.dragAndDrop(element, target);
//此方法和上面那个等价
action.clickAndHold(element).moveToElement(target).release();
//点击元素element并以其左上角坐标为原点,移动到(200,300)的位置并释放
action.dragAndDropBy(element, 200, 300);

2、键盘操作

键盘操作方法比较少,如下所示:

(1)、直接输入字符串

如下示例为在百度主页搜索;

System.setProperty("webdriver.chrome.driver", "D:\\test\\driver\\chromedriver.exe");
ChromeDriver chrome = new ChromeDriver();
chrome.get("https://www.baidu.com/");
Actions action = new Actions(chrome);
By input = By.id("kw");
By search = By.id("su");
action.sendKeys(chrome.findElement(input),"java").perform();
action.moveToElement(chrome.findElement(search)).click().perform();

(2)、模拟键盘输入

这里主要只有两个方法可以用,为keyDown和keyUp,即为按下和松开;

System.setProperty("webdriver.chrome.driver", "D:\\test\\driver\\chromedriver.exe");
ChromeDriver chrome = new ChromeDriver();
chrome.get("https://www.baidu.com/");
Actions action = new Actions(chrome);
action.keyDown(Keys.ALT);//按下alt键
action.keyDown(Keys.SHIFT);按下shift键
action.keyUp(Keys.ALT);//松开alt键
action.keyUp(Keys.SHIFT);//松开shift键

你可能感兴趣的:(selenium,java)