自动化测试Selenium(3)

目录

WebDriver相关API

打印信息

打印title

打印url

浏览器的操作

浏览器最大化

设置浏览器的宽,高

[操作浏览器的前进, 后退, 刷新](#操作浏览器的前进, 后退, 刷新)

控制浏览器滚动条

键盘事件

键盘单键用法

键盘组合按键用法

鼠标事件


WebDriver相关API

打印信息

打印title

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

String title = webDriver.getTitle();

打印url

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

String url = webDriver.getCurrentUrl();

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

java 复制代码
    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();//刷新

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

java 复制代码
    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")//滑动到顶部

测试代码, 自行测试:

java 复制代码
    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");

测试代码, 自行测试:

java 复制代码
    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)方法用于将鼠标移动到指定的元素上.

测试代码,自行测试:

java 复制代码
    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()方法的话, 我也能够拿满年终奖从而为军队补充军费了罢".

相关推荐
把头塞进显示器4 天前
电商平台-测试报告
python·selenium·pytest
霍格沃兹测试学院-小舟畅学5 天前
UI 测试的语义断言:Midscene aiAssert 比像素比对稳在哪、又会骗在哪
人工智能·测试工具
zuozewei5 天前
附录 A:主流工具对比选型表
人工智能·测试工具
我的xiaodoujiao5 天前
Django 基础知识详细图文教程 10-Django 模板引擎 3
后端·python·测试工具·django
霍格沃兹测试学院-小舟畅学5 天前
Google 开源 ARTEMIS:AI Agent 如何接管 Android 真机测试?
人工智能·测试工具
Liaiyang665 天前
# 自研 AST 容错初筛工具:横向评测 Django、PyTorch、TensorFlow 三大开源 Python 框架异常收容风险
python·测试工具·自动化·开源软件·代码规范·devops·代码复审
霍格沃兹测试学院-小舟畅学5 天前
我用 AI 把 Swagger 变成 500 条 pytest 用例,回归从 3 天到 3 小时
人工智能·测试工具
奔跑中的小象6 天前
GuideLLM 压测实战指南:给大模型推理服务做一次完整 SLA 评估
测试工具·guidellm
cpolar技术支持6 天前
本地 Playwright 测试报告怎么远程复盘?Trace Viewer 跑起来后,用 cpolar 分享失败现场
前端·自动化测试·测试工具·cpolar·playwright
测试狗科研平台7 天前
材料热传导能力表征——热导率计算方法与流程解析
科技·测试工具·材料工程