自动化测试 selenium基础

发布于:2024-05-06 ⋅ 阅读:(24) ⋅ 点赞:(0)

前言

我们都知道测试开发工程师的任务是根据用户需求测试用例的同时,害的开发自动化工具来减轻测试压力且提高测试的效率以及质量,这一节我们就来简单谈谈开发简单的自动化工具基础

什么是自动化测试呢?就是将我们需要做的测试交给机器去做,也就是使用代码来模拟人对于机器的行为,比如说点击动作,输入动作.....

环境配置

我们知道chrome浏览器是当前使用较多的浏览器,本期就以chrome为例来操作

首先我们需要下载一个chrome浏览器,并查看对应的版本号引入chrome浏览器的一个驱动

网址如下:

Chrome for Testing availability

下载对应的版本即可

然后将对应的chrome.exe复制到对应的路径下,并配置环境变量

总而言之就是将驱动放置到对应的chrome安装路径,将chrome安装路径加入到环境变量即可

然后加上对应的依赖

<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-java</artifactId>
 <version>4.0.0</version>
</dependency>

此时我们就可以开始我们的自动化之旅了

在这之前,聊一聊selenium是如何使用代码达成模拟操作的

我们先看一张图

这个图有三个角色

自动化脚本代码 web驱动 浏览器 

我们通过代码生成一个http请求  请求到达驱动就生成一个http server接受请求 最后达成操作浏览器返回值的作用

测试练习

1.测试环境是否搭建完成

        WebDriver driver = new ChromeDriver();
        driver.get("http://www.baidu.com");

如果能使用chrome浏览器跳转到百度首页,就代表环境搭建成功

2.使用代码模拟搜索功能

在这之前我们需要知道常用的定位方式

1.使用css选择器定位

就和css标签定位方式是一样的

类选择器使用.  

id选择器使用#

2.使用xpath定位

xpath是从dom树结构中定位

有两种方式

一种是以绝对路径的方式(不常用)

例如: /html/body/div....

一种是以相对路径的方式

常用的是以下四种

1.相对路径 + 索引

//form/span[1]  注意这里html中索引是从1开始的

2.相对路径 + 属性

//input[@class="s_ipt"]

3.相对路径 + 通配符

//*[@]*="s_ipt"]

4.相对路径 + 文本匹配 (标签中间的文本)

a[text()="aaa"]  这里匹配的就是aaa文本所在的a标签

我们可以使用简洁的方式选中自动生成选择器以及xpath

知道了以上知识,我们就可以来实现搜索了

        WebDriver driver = new ChromeDriver();
        driver.get("http://www.baidu.com");
        WebElement element = driver.findElement(new By.ByCssSelector("#kw"));
        element.sendKeys("测试开发前景");
        driver.findElement(new By.ByCssSelector("#su")).click();
        sleep(3000);
        driver.quit();

这里我们就可以实现看到测试开发前景的搜索结果了

休眠3000秒是为了可以看到测试的结果

3.操作测试对象

注: 以下函数都是对于WebElement对象进行操作的

3.1 点击对象

使用click()函数即可

3.2 输入值

使用sendKeys()函数即可

3.3 清空文本

clear()函数即可

3.4 提交 

submit()即可

3.5 获取元素文本信息

text()函数即可

3.6 获取 title/url

对WebDriver对象使用getTitle()/getCurrentUrl()方法即可

3.7 窗口最大化

使用WebDriver.manage().window().maximize()函数即可

3.8 设置浏览器的大小

webdriver.manage().window().setSize(new  Demension(width,height))

3.9 浏览器的前进后退

webdriver.navigate().back()/forward()

3.10 操作浏览器滚动条

需要将WebDriver强转成JavaScriptExcucter然后使用前端的js语法解决问题

比如

3.11 键盘事件 - 回车

只需要将找到的WebElement调用sendKeys方法传入参数Keys.ENTER即可

例如 

webDriver.findElement(By.cssSelecter("#kw")).sendKeys(Keys.ENTER)

3.12 键盘事件 组合键

webDriver.findElement(By.cssSelecter("#kw")).sendKeys(Keys.CONTROL,"A");

其他的组合键和这个同理

3.13 鼠标事件

Actions action = new Action(webdriver);
//找到目标元素
WebLelment element = webdriver.findElement(By.cssSelecter("..."));
actions.moveToElement(element).contextClick().perform()
//不加上perform也可以,但是看不到效果

3.14 切换窗口

因为如果点击的是超链接或者是子窗口的元素

直接访问不到

需要定位到对应窗口,这里以新窗口为例

这里我们主要是用过句柄访问

//获取本页面句柄
String cur = webDriver.getWindowHandle();
//获取所有句柄
Set<String> handles = webDriver.getWindowHandles();
//转到新窗口的句柄
String  tmp = "";
for(String s : handles) {
{
    tmp = s;
}
webDriver.switchTo().window(tmp);

3.15 截图

将webDriver转成TakeScreenShot即可

记得引入common-io的依赖

File f = (TakeScreenShot)webDriver.getScreenstotAs(OutputType.FILE);
FileUtils.copyFile(f,new File("目的地址"));

3.16 选中复选框

使用list接受 findElement

for循环分别getAttribute("type").equals(...)

然后对应的click()即可

3.17  子网页

要选中只需要使用

webDriver.switchTo().frame("对应的frame名即可")

或者使用索引也可以 索引从1开始