0


自动化测试Selenium(3)

WebDriver相关API

打印信息

打印title

即打印该网址的标题.使用如下:

String title = webDriver.getTitle();

打印url

即打印该网址的url. 使用如下:

String url = webDriver.getCurrentUrl();

让我们写一个基本的测试单元:

    private static void test04() {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        String title = webDriver.getTitle();
        String url = webDriver.getCurrentUrl();
        System.out.println(title);
        System.out.println(url);
        if(title.equals("百度一下,你就知道") && url.equals("https://www.baidu.com/")) {
            System.out.println("测试通过");
        } else {
            System.out.println("测试不通过");
        }
    }

测试结果:

浏览器的操作

浏览器最大化

我们知道启动的浏览器不是最大化的, 这样不会影响脚本的执行, 但是有时候会影响我们"观看"脚本的执行.

webDriver.manager.window().maxmize(); (注意这里是"mize"而不是"size"!!!)

相似地还有一个能使得浏览器能变为全屏(就是需要esc才能缩小的那种):

webDriver.manager.window().fullscreen();

结果展示:

设置浏览器的宽,高

最大化还是不够灵活, 能不能随意地设置浏览器的宽, 高显示? 当然也是可以的.

webDriver.manager().window().setSize(new Dimension(600, 1000)); //注意这个方法是要创建Dimension对象, 然后传入这个对象, 而不是直接设置宽和高. (Dimension即尺寸的意思)

操作浏览器的前进, 后退, 刷新

浏览器上有一个后退, 前进按钮, 也相对比较容易实现:

webDriver.navigate().back(); //后退

webDriver.navigate().forward();//前进

webDriver.navigate().refresh();//刷新

这里给出一个测试用例, 自行测试:

    private static void test06() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        webDriver.navigate().back();
        sleep(3000);
        webDriver.navigate().forward();
        sleep(3000);
        webDriver.navigate().refresh();
    }

控制浏览器滚动条

浏览器滚动条的控制需要依赖js脚本:

((JavaScriptExecutor)webDriver).executeScript("document.documentElement.scrollTop

=10000"); //滑动到最底部

((JavaScriptExecutor)webDriver).executeScript("document.documentElement.scrollTop

=0")//滑动到顶部

测试代码, 自行测试:

    private static void test07() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");
        sleep(3000);
        ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=0");
    }

键盘事件

键盘单键用法

使用之前的sendKeys()方法即可实现键盘操作

sendKeys(Keys.TAB); //TAB

sendKeys(Keys.ENTER); //回车

sendKeys(Keys.SPACE); //空格

sendKeys(Keys.ESCAPE);//回退键 (esc)

键盘组合按键用法

这里介绍组合键ctrl + A, ctrl + X, ctrl + V三种用法, 其它的可自行摸索.

sendKeys(CONTROL, "A");

sendKeys(CONTROL, "X");

sendKeys(CONTROL, "V");

测试代码, 自行测试:

    private static void test08() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(CONTROL, "A");
        sleep(3000);
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(CONTROL, "X");
        sleep(3000);
        webDriver.findElement(By.cssSelector("#kw")).sendKeys(CONTROL, "V");
    }

鼠标事件

之前我们已经学了click()方法, 这个就是鼠标左击的操作, 接下来我们来学习一下其它操作.

Actions类用于执行各种鼠标和键盘操作.

contextClick(element)方法用于执行鼠标右击操作.

doubleClick(element)方法用于执行鼠标的双击操作.

dragAndDrop(source, target)方法用于执行拖动操作, 将源元素拖动到目标元素上.

moveToElement(element)方法用于将鼠标移动到指定的元素上.

测试代码,自行测试:

    private static void test09() throws InterruptedException {
        WebDriver webDriver = new ChromeDriver();
        webDriver.get("https://www.baidu.com");
        webDriver.findElement(By.cssSelector("#kw")).sendKeys("星穹铁道");
        webDriver.findElement(By.cssSelector("#su")).click();
        sleep(3000);
        //创建Actions对象
        Actions actions = new Actions(webDriver);
        //找到图片按钮
        WebElement webElement = webDriver.findElement(By.cssSelector("#s_tab > div > a.s-tab-item.s-tab-item_1CwH-.s-tab-pic_p4Uej.s-tab-pic"));
        //移动到指定元素并右击
        /**
         * 注意: perform()方法用于执行构建的操作序列. 在Selenium WebDriver中, 许多动作都需要通过
         * perform()方法来触发实际的执行. 在Actions类中, 使用perform()方法可以执行鼠标移动,
         * 点击, 拖动等操作.
         */
        actions.moveToElement(webElement).contextClick().perform();
    }

注: perform()方法用于执行构建的操作序列. 在Selenium WebDriver中, 许多动作都需要通过perform()方法来触发实际执行. 在Actions类中, 使用perform()方法可以执行鼠标移动,点击, 拖动等操作.

没有调用perform()方法, 操作序列不会被执行, 因此在使用Actions类时务必记得调用perform()方法来触发操作的实际执行. 就连远在大洋彼岸的五星上将麦克阿瑟也说到:"如果当年在对这个软件进行自动化测试时, 如果我不像当时没有调用perform()方法的话, 我也能够拿满年终奖从而为军队补充军费了罢".


本文转载自: https://blog.csdn.net/asdssadddd/article/details/137853736
版权归原作者 灰灰快醒醒 所有, 如有侵权,请联系我们删除。

“自动化测试Selenium(3)”的评论:

还没有评论