测试自动化_博客已迁移自动化测试Web自动化测试

11.2 Actions类介绍

2018-06-25  本文已影响35人  博客已迁移I米阳

我们已经学过了单击click() 方法,但这还不够,我们实际工作中通过鼠标除了单击外,我们还会用到右键,双击,拖拽等等,也可能需要用到键盘操作,那这些操作WebDriver的Actions类都支持。


在某元素上鼠标右键和双击

右键:contextClick().perform()
双击:doubleClick().perform()

两个方法如果传入WebElement参数,则在元素上右键或者双击,如果不传入任何参数,则在鼠标当前位置右键和双击。

代码示例:

    @Test
    public void keyTest() throws InterruptedException {
        driver.get("http://www.baidu.com");
        WebElement ele = driver.findElement(By.id("su"));
        Actions action = new Actions(driver);
        // 在元素上右键
        action.contextClick(ele).perform();
        Thread.sleep(3000);
        //  在上双击
        action.doubleClick(ele).perform();
    }

鼠标移动到某个元素上

moveToElement(element).perform()

代码示例:

    @Test
    public void moveTest(){
        driver.get("http://www.qq.com/");
        WebElement ele = driver.findElement(By.className("searchSelected"));
        Actions action = new Actions(driver);
        // 鼠标移动到某个元素上
        action.moveToElement(ele).perform();
    }

把元素拖动到(x,y)上

dragAndDropBy(WebElement,x,y).perform()

该方法传入三个参数,第一个是WebElement,第二个是x轴坐标,第三个是y轴坐标。

代码示例:

    @Test
    public void dragTest(){
        driver.get("file:///D:/html/dragAndDrop.html");
        WebElement ele = driver.findElement(By.id("drag"));
        Actions action = new Actions(driver);
        // 拖动某个元素到某个坐标
        action.dragAndDropBy(ele,500,500).perform();
    }

把元素拖动到另一个元素上

 clickAndHold(ele1).moveToElement(ele2).release(ele1).perform()

clickAndHold(ele1)按住元素1,moveToElement(ele2)移动到元素2,release(ele1)再释放元素1.

代码示例:

    @Test
    public void dragTest1(){
        driver.get("file:///D:/html/dragAndDrop.html");
        WebElement ele1 = driver.findElement(By.id("drag"));
        WebElement ele2 = driver.findElement(By.xpath("html/body/h1"));
        Actions action = new Actions(driver);
        // 在元素1上按住,然后拖动到元素2在释放
        action.clickAndHold(ele1).moveToElement(ele2).release(ele1).perform();
    }

模拟键盘操作

按住某个按键:keyDown()
松开某个按键:keyUp()

两个方法均传入Keys类型参数。注意的是Actions类提供的模拟键盘操作,只能模拟键盘键盘四周的按键,也就是无法模拟字母按键,如果需要模拟字母按键的操作可以结合Java的Robot类来实现。

代码示例:

    @Test
    public void selectedTest() throws InterruptedException {
        driver.get("file:///D:/html/index.html");
//        定位下拉框
        WebElement selected = driver.findElement(By.id("selectWithMultipleEqualsMultiple"));
//        定位下拉框中的选项
        java.util.List<WebElement> eles = selected.findElements(By.tagName("option"));
        Actions action = new Actions(driver);
        Thread.sleep(3000);
        // 按住 shift ,鼠标点击元素1和元素2
        action.keyDown(Keys.SHIFT).click(eles.get(1)).click(eles.get(2)).perform();
    }

Robot 类示例:

    @Test
    public void robotTest() throws AWTException, InterruptedException {
        Robot robot = new Robot();
        driver.get("file:///D:/html/index.html");
        // 按住 Ctrl + S
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_S);
        Thread.sleep(3000);
        // 释放 Ctrl + S
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyRelease(KeyEvent.VK_S);
    }

keyPress() 按住某个按键
keyRelease() 松开某个按键

如果文章对您有帮助,请赞赏支持!


欢迎关注个人公众号:


个人公众号
上一篇下一篇

猜你喜欢

热点阅读