1. 什么是自动化测试
1.1 自动化测试介绍
自动化测试指软件测试的自动化,简单来说,就是将人工操作的的测试工作进行转换,让代码去执行测试工作,这样做主要是为了提高测试效率,从而提高测试产品的质量;
1.2 自动化测试分类
1.2.1 单元测试
最大的投入应该在单元测试上,单元测试运行的频率也更加高。 java的单元测试框架是Junit
1.2.2 接口测试
接口测试就是API测试,相对于UI自动化API自动化更加容易实现,执行起来也更稳定。
接口自动化的有以下特点:
可在产品前期,接口完成后介入
用例维护量小
适合接口变动较小,界面变动频繁的项目
常见的接口自动化测试工具有,RobotFramework,JMeter,SoapUI,TestNG+HttpClient,Postman 等。接口其实就是前端发出请求之后到后端的路由:chrome浏览器中的接口如下图所示:
1.2.3 UI自动化
UI层的自动化测试更加贴近用户的需求和 软件系统的实际业务。并且有时候我们不得不进行UI层的测试。
UI自动化的特点:
用例维护量大
页面相关性强,必须后期项目页面开发完成后介入
UI测试适合与界面变动较小的项目
2. selenium介绍
2.1 selenium的优点
selenium有以下优点:
1、免费,可以去查看原码;
2、selenium支持各大浏览器(edge,chrome,opera);
3、跨平台(在linux,windows,mac)等平台上都可以使用;
4、有丰富的api;
2.2 selenium的工作原理
![](https://i-blog.csdnimg.cn/direct/4d775d417f3440009af50ced75d78fd5.png)
上图就是selenium的工作原理图: 自动化脚本代码:在idea中写的代码; 驱动:有了驱动之后就可以对页面进行操作; 浏览器:就是我们日常使用的浏览器; webdriver浏览器驱动:就类似于启动一个服务器,(ip来定位一个服务器,port来定义该服务器里面的一个进程),通过该驱动器我们就可以知道往哪个服务器上发动请求;
2.3 selenium的环境搭建(java)
2.3.1 下载chrome浏览器
https://www.google.cn/intl/zh-CN/chrome/
2.3.2 查看浏览器版本
2.3.3 下载chrome浏览器驱动
https://chromedriver.chromium.org/downloads
没有129版本的话,点击箭头所示的连接,进入到新的页面;
找到相对应的版本的驱动器进行下载;
2.3.4 配置环境变量
将刚才下载的驱动器的exe文件移动到浏览器所在位置的路径下面;同时修该环境变量;
Docs
2.3.5 验证驱动器是否下载成功
<dependencies>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
</dependencies>
将依赖复制到pom文件;代码如下:
运行程序,发现chrome浏览器被打开且弹跳到百度页面:
如此我们的环境就搭建好了;
- selenium相关的api
3.1 定位元素
3.1.1 css选择器定位元素
1、类选择器:.class值(.s_ipt)
2、id选择器:#id的值()
3、父类选择器 子类选择器:父类选择器表达式 子类选择器表达式(#aaa #bbb)
4、标签选择器:标签名;
3.1.2 xpath定位元素(xpath是一个语法)
绝对路径:通过一个/开头
相对路径:通过一个//开头
1、相对路径+索引,该索引从1号位开始计数;
2、相对路径+属性值(//input[@class="s_ipt"])
3、相对路径+通配符(//*[@class="s_ipt"])
4、相对路径+文本匹配(//a[text()="新闻"])
快捷方式:点击定位的元素,右键鼠标自己定位选择器;从而选择合适的选择器或者xpath,![](https://i-blog.csdnimg.cn/direct/9f54b1c5ebc54fe0b22328d3676cae13.png)
3.1.3 标签定位元素
通过下面代码来了解一下浏览器驱动器的工作原理;
private static void Test01() {
WebDriver webDriver = new ChromeDriver();
webDriver.get("https://www.baidu.com");
WebElement search_input = webDriver.findElement(By.cssSelector(".s_ipt"));
// WebElement search_input = webDriver.findElement(By.xpath("//*[@id=\"form\"]/span[1]"));
if(search_input == null){
System.out.println("测试不通过");
}else{
System.out.println("测试通过");
}
// webDriver.quit();
// webDriver.close();
}
}
2.4 关闭浏览器api
webDriver.quit();
webDriver.close();
quit比较关的彻底,向浏览器存储的cookie都会被彻底清除;close仅仅是将浏览器关闭;
q:css选择器个xpath选择器之间的区别: a:一般来说,css选择器定位元素的效率更高;
3. 操作测试对象
webdriver 中比较常用的操作对象的方法有下面几个:
click 点击对象
send_keys 在对象上模拟按键输入
clear 清除对象输入的文本内容
submit 提交
text 用于获取元素的文本信息
代码如下:
private static void Test02() throws InterruptedException {
WebDriver webDriver = new ChromeDriver();
webDriver.get("https://www.baidu.com/");
//找到搜索输入框
WebElement search_input = webDriver.findElement(By.cssSelector("#kw"));
//相搜索输入框中输入沈梦瑶
search_input.sendKeys(("沈梦瑶"));
//找到百度一下并点击
WebElement baidu_button = webDriver.findElement(By.cssSelector("#su"));
//点击百度一下
baidu_button.click();
sleep(3000);
List<WebElement> search_results =
webDriver.findElements(By.cssSelector("a em"));
sleep(3000);
for(int i = 0;i < search_results.size();i++){
if(search_results.get(i).getText().equals("沈梦瑶")){
System.out.println("测试通过");
}else{
System.out.println("测试不通过");
}
}
}
运行结果如下所示:
浏览器的页面流程:
1、首先驱动器打开chrome浏览器
2、在搜索框里面输入:沈梦瑶
3、点击百度一下,停止运行,等待3000ms
4、进入下一个搜索结果的页面,如下所示:
5、浏览器驱动器将搜索到的结果进行整理并遍历,一一筛选出我们需要的结果,从而将我们需要的内容反馈到idea;
ps:本次的内容就到这里了,如果对你有所帮助的话就请一键三连哦!!!
封面截图来自刘姝贤的毕业公演的pv;
url:【流水线的流水账】江西几日游_哔哩哔哩_bilibili
版权归原作者 仲夏是荔枝味 所有, 如有侵权,请联系我们删除。