java-selenium鼠标键盘操作Actions类和Robot
Actions类
一、鼠标右击、双击
Java代码
//定位百度首页右上角 新闻 WebElement Xw=driver.findElement(By.xpath("//*[@id='u1']/a[1]")); //new Actions对象 Actions RightClick=new Actions(driver); //在 新闻 上点击鼠标右键 RightClick.contextClick(Xw).perform(); Thread.sleep(3000); //双击 新闻 RightClick.doubleClick(Xw).perform(); Thread.sleep(3000);
二、鼠标移动到指定位置
java代码
//定位百度首页右侧 更多产品 WebElement gdcp=driver.findElement(By.xpath("//*[text()='更多产品']")); //实例化Actions Actions MTE=new Actions(driver); //鼠标移动到 更多产品上 MTE.moveToElement(gdcp).perform(); //等待3秒 Thread.sleep(3000);
三、拖动元素
java代码
//定位要拖动的元素 WebElement dg=driver.findElement(By.xpath("//*[text()='拖动']")); //实例化Actions Actions tuodong=new Actions(driver); Thread.sleep(1000); //将定位的dg拖动(100,300) tuodong.dragAndDropBy(dg,100,300).perform(); Thread.sleep(2000);
四、将元素拖到另一元素上
java代码
//定位要拖动的元素 WebElement ElementStart=driver.findElement(By.xpath("//*[text()='拖动']")); //定位终点上的元素 WebElement ElementEnd=driver.findElement(By.xpath("//*[text()='tuodongduodong']")); //实例化Actions Actions CM=new Actions(driver); CM.clickAndHold(ElementStart) .moveToElement(ElementEnd) .release(ElementEnd) .perform();
五、下拉框多选
HTML源码
<td>多选下拉框</td> <select id="selects" multiple="multiple"> <option label="java">java</option> <option label="c">c</option> <option label="c++">c++</option> <option label="VB">VB</option> <option label="php">php</option> <option label="python">python</option> <option label="ruby">ruby</option> </select>
Java代码
//获取下拉框中所有的文本元素 List<WebElement> list=driver.findElements(By.xpath("//*[@id='selects']/option")); //实例化Actions Actions AtList=new Actions(driver); //按下CONTROL键 AtList.keyDown(Keys.CONTROL) //点击第一个元素,第一个元素是被默认选中的,所以不想选择第一个就再点一下 .click(list.get(0)) //点击第二个元素 .click(list.get(2)) //点击第四个元素 .click(list.get(3)) //释放CONTROL键 .keyUp(Keys.CONTROL) //执行 .perform();
Robot类
按下按键 keyPress()
释放按键 keyRelease()
public void Robot() throws AWTException{
driver.get("https://www.baidu.com/");
//实例化Robot
Robot rb=new Robot();
//按下CONTROL键
rb.keyPress(KeyEvent.VK_CONTROL);
//按下s键
rb.keyPress(KeyEvent.VK_S);
Thread.sleep(1000);
//松开s键
rb.keyRelease(KeyEvent.VK_S);
//松开CONTROL键
rb.keyRelease(KeyEvent.VK_CONTROL);
}