自动化测试实战
http://8.137.19.140:9090/blog_login.htm
账号: lisi
密码: 123456
上面是系统链接
1. 自动化测试的步骤
1.1 编写Web测试用例
1.2 创建空项目添加依赖
然后我们创建一个新的java项目(使用maven管理),然后引入我们的配置文件:屏幕截图,驱动管理,selenium库
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.9.0</version>
</dependency>
<!-- 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>
1.3 搭建整体的项目框架
创建驱动对象---所有的测试用例共用一个driver对象
编写测试用例---按照页面分类,每个页面是一个java文件.页面下所有的用例统一管理
common(公共部分)
-Utils.java --- 创建驱动对象,等待,屏幕截图...
tests(存放测试用例)
-LoginPage.java --- 登录页面的所有用例
-ListPage.java --- 列表页面的所有用例
-EditPage.java --- 编辑页面的所有用例
-DetailPage.java --- 详情页面的所有用例
image(存放屏幕截图)
-2025-2-14
-2025-2-15
创建如图
Utils
tests和image
tests详细代码
LoginPage
package org.xiaobai.test_blog_system.tests;
import dev.failsafe.internal.util.Assert;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.xiaobai.test_blog_system.common.Utils;
//登录页面
public class LoginPage extends Utils {
public static String url = "http://8.137.19.140:9090/blog_login.html";
public LoginPage() throws InterruptedException {
super(url);
}
//当前页面是否能够正确载入
public void logPageRight() throws InterruptedException {
//通过查看页面元素是否存在来判断当前页面是否正确加载
driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)"));
//登录输入框
driver.findElement(By.cssSelector("body > div.container-login > div"));
// Thread.sleep(2000);
// driver.quit();
}
//检查登录功能 --成功登录
public void LoginSuc() throws InterruptedException {
//定位账号输 入框
driver.findElement(By.cssSelector("#username")).sendKeys("lisi");
// Thread.sleep(2000);
//定位密码输入框
driver.findElement(By.cssSelector("#password")).sendKeys("123456");
// Thread.sleep(2000);
//定位提交按钮并点击
driver.findElement(By.cssSelector("#submit")).click();
// Thread.sleep(2000);
//登录成功之后怎么确认?我们在跳转后的页面找一个元素,如果找到了就登录成功.我们也可以用登录前和登录后的url是否一致,标签名字...只要页面元素不一样就能作为测试点
driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a"));
//页面标题来检查是否登录成功
String expect = driver.getTitle();
//通过断言来进行判断
assert expect.equals("博客列表页");
// Thread.sleep(2000);
// driver.quit();
driver.navigate().back();
}
//测试登录失败
public void LoginFail() throws InterruptedException {
//清除输入框里面的信息
//方法1,clear
driver.findElement(By.cssSelector("#username")).clear();
driver.findElement(By.cssSelector("#password")).clear();
//方法2,重新刷新refresh
driver.navigate().refresh();
//定位账号输 入框
driver.findElement(By.cssSelector("#username")).sendKeys("lisi123");
// Thread.sleep(2000);
//定位密码输入框
driver.findElement(By.cssSelector("#password")).sendKeys("123456");
// Thread.sleep(2000);
//定位提交按钮并点击
driver.findElement(By.cssSelector("#submit")).click();
Thread.sleep(2000);
//判断是否有弹窗出现
//获取alert
Alert alert = driver.switchTo().alert();
String s = alert.getText();
assert s.equals("用户不存在");
alert.accept();
driver.navigate().back();
// Thread.sleep(1000);
driver.quit();
}
}
注意事项
注意,我们什么时候需要切换窗口?当我们打开多个标签页的时候,且测试新的标签页.
如何检查登录成功?
我们在跳转后的页面找一个元素,如果找到了就登录成功.我们也可以用登录前和登录后的url是否一致,标签名字...只要页面元素不一样就能作为测试点
开启断言功能
如果账号或者密码不对,怎么判断?通过看是否有弹窗: 我们可以参考这篇博客:Selenium之定位浏览器弹窗方法汇总_selnium定位弹窗-CSDN博客
ListPage
注意事项
关于截图问题:
在处理弹窗处理完成之前我们是不可以进行其他比如截图操作的
登录状态的用例要保证登录状态.未登录状态的用例要保证未登录状态.因此我们优化一下tests.直接把所有处理的未登录状态放在一个tests里面
PageByNoLogin
ListPage修改版本
EditPage
注意:
我们的博客编辑区是无法进行交互的,因此我们不能够直接用sendKeys去把值传进去,因为里面我们使用的是第三方插件
解决方法
1> 博客内容本身就有,我们写标题即可
2> 通过键盘操作来实现(很少使用):Actions接口 | Selenium
步骤:
1. 鼠标先移到博客内容区域
2. 双击鼠标把内容删除,鼠标双击内容+键盘delete
3. 输入内容
其他页面我们后续补充
1.4 将自动化测试补充至测试报告
测试报告没有统一的模板,不同企业的测试报告不同,下面是我们博客系统的测试报告