在测试使用Selenium webdriver测试WEB系统的时候,用到了模拟鼠标、键盘的一些输入操做。html
一、鼠标的左键点击、双击、拖拽、右键点击等;web
二、键盘的回车、回退、空格、ctrl、alt、shift等;测试
在webdriver中,有专门的一个类,是用来进行鼠标、键盘的模拟操做的,那就是Actions类,该类使用时,又会涉及到Keyboard、Mouse、CompositeAction(复合动做),先对Mouse的方法作简单罗列,而后再用代码说明:spa
一、鼠标左键点击:orm
Actions action = new Actions(driver);htm
action.click(driver.findElement(By.by);blog
左键点击是普一般用的方法,前面已经介绍过一种更简单的方法:ip
Driverdriver=new Driver();get
driver.findElement(By.xpath(xpath)).click();it
二、鼠标左键双击:
Actionsaction = new Actions(driver);
action.doubleClick(driver.findElement(By.xpath(xpath)));
三、鼠标左键按下操做:
Actionsaction = new Actions(driver);
action.clickAndHold(driver.findElemen(By.xpath(xpath)));
四、鼠标左键移动到元素操做:
Actionsaction = new Actions(driver);
action.moveToElement(driver.findElement(By.xpath(xpath)));
五、鼠标右键点击操做:
Actionsaction = new Actions(driver) ;
action.contextClick(driver.findElement(By.xpath(xpath)));
六、组合的鼠标操做(将目标元素拖拽到指定的元素上):
Actionsaction = new Actions(driver);
action.dragAndDrop(driver.findElement(By.xpath(xpath)),driver.findElement(By.xpath(xpath)));
七、组合的鼠标操做(将目标元素拖拽到指定的元素上):
Actionsaction = new Actions(driver);
action.dragAndDrop(driver.findElement(By.xpath(xpath)),xOffset,yOffset);
代码演示:
driver.get("http://www.baidu.com");
driver.findElement(By.name("wd")).sendKeys("林丹");
//点击操做
driver.findElement(by.id("su")).click();
driver.navigate().back();
Actionsaction=new Actions(driver);
action.click(driver.findElement(by.id("su")));
//双击操做(略)
//拖拽选择操做,鼠标按住不放,进行拖拽选择,而后释放鼠标,须要三个动做
action.clickAndHold(driver.findElement(By.id("1"))).moveToElement(driver.findElement(By.id("3"))).perform();
action.release();
//拖拽元素,将一个元素拖拽到另外一个元素上,而后释放鼠标(略)
键盘的模拟操做,包括普通按键,好比enter、backspace、tab等,还包括四个修饰键(Modifier Keys),分别是Caps Lock,Control,Option,Command。
普通按键使用时,直接使用sendkeys(theKeys)就能够,如按下enter键:
action.sendKeys(Keys.ENTER).perform();
修饰键通常使用时,是和别的按键配合使用的,好比快捷键ctrl+F4,这时就得使用keyDown(theKeys)、keyUp(theKeys)来操做,代码以下:
driver.get("http://www.baidu.com");
driver.findElement(by.name("wd")).sendKeys("林丹");
Actionsaction=new Actions(driver);
//输入框中输入内容,而后点击回车进行百度
action.sendKeys(Keys.ENTER).perform();
//使用快捷键alt+f4关闭窗口(可是该方法不稳定,时行时不行,不行居多)
action.keyDown(keys.ATL).keyDown(keys.F4).keyUp(keys.ALT).perform();
//使用ctrl+a全选
driver.findElement(By.id("kw")).click();
action.sendKeys(Keys.CONTROL+"a").perform();
转自:https://www.cnblogs.com/111testing/p/6152834.html
Tips:
一、拖拽选择时,使用clickAndHold和moveToElement时,会受到鼠标所在位置的影响,因此尽可能是两个方法一块儿使用;
二、拖拽元素时,dragAndDrop方法,我没有找到实现的场景,因此没有写代码试验;
三、直接按下普通按键时,直接使用sendkeys(theKeys)方法就可以实现;
四、须要使用修饰键时,须要连贯动做中应该使用keydown和keyup方法;
action.keyDown(keys.ATL).sendKeys(keys.F4).keyUp(keys.ALT).perform();//这是不能实现alt+f4关闭窗口的效果的,只能实现单独按f4的效果
五、对于一些快捷键,如ctrl+a,能够直接sendkeys(Keys.CONTROL+"a")。