当前位置: 首页 > news >正文

自动化测试实战

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,cleardriver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();//方法2,重新刷新refreshdriver.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);//判断是否有弹窗出现//获取alertAlert 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 将自动化测试补充至测试报告

        

        测试报告没有统一的模板,不同企业的测试报告不同,下面是我们博客系统的测试报告

        

http://www.lryc.cn/news/536775.html

相关文章:

  • qt QPlainTextEdit总结
  • AWS SES 邮件服务退信/投诉处理与最佳实践指南
  • 理解WebGPU 中的 GPUAdapter :连接浏览器与 GPU 的桥梁
  • rpx和px混用方案
  • 光伏设计软件分类:无人机、Unity3D引擎齐上阵
  • 太速科技-616-基于6U VPX XCVU9P+XCZU7EV的双FMC信号处理板卡
  • 国产鲲鹏920+欧拉+达梦
  • LeetCode--146. LRU 缓存【Golang中的list】
  • 查看notebook的jupyter token
  • vue+springboot+webtrc+websocket实现双人音视频通话会议
  • 什么是高亮环形光源
  • 2025年3月一区SCI-混沌进化优化算法Chaotic evolution optimization-附Matlab免费代码
  • 51单片机俄罗斯方块开机动画
  • RK3588开发板部署DeepSeek-R1-Distill-Qwen-1.5B的步骤及问题
  • 网络安全 | 安全信息与事件管理(SIEM)系统的选型与实施
  • DeepSeek接口联调(postman版)
  • RadASM环境,win32汇编入门教程之三
  • oracle多次密码错误登录,用户锁住或失效
  • HCIA-Datacom笔记3:网络工程
  • [NGINX]命令行参数
  • http 模块
  • 本地部署DeepSeek + AnythingLLM 搭建高效安全的个人知识库
  • LLM - 理解 DeepSeek 的 GPRO (分组相对策略优化) 公式与源码 教程(2)
  • Github 2025-02-14 Java开源项目日报 Top10
  • DeepSeek赋能制造业:图表可视化从入门到精通
  • Python爬虫技术
  • C++Primer学习(4.6成员访问运算符)
  • c++14之std::make_unique
  • 服务器linux操作系统安全加固
  • 原生Three.js 和 Cesium.js 案例 。 智慧城市 数字孪生常用功能列表