【Java自动化学习】Web自动化

news2024/11/15 11:03:00

一、环境安装

环境搭建安装见此博客文章链接:https://blog.csdn.net/qq_73471456/article/details/130836494

二、元素定位、等待方式

见此之前的博客文章:selenium操作使用方式

三、下拉框定位

四、iframe 切换元素定位

 

注意事项:连续定位2个iframe

五、Junit单元测试框架

Junit框架见此博客文章:https://blog.csdn.net/qq_73471456/article/details/130856929

六、Allure测试报告

Allure测试报告有以下好处:
1.它提供了一个直观的、易于阅读的报告界面,可以方便地査看测试结果和统计数据。
2.报告界面具有交互性,可以通过图表和图形化界面快速检索问题和错误。
3.它能够提供丰富的测试数据分析,包括用例执行时间、失败率、通过率等等
4.支持多种编程语言和框架,如Java、Python、Ruby、PHPUnit等,
5.与各种CI/CD工具集成,如Jenkins、TeamCity、Bamboo等。
6.可以生成历史记录报告,并支持跨团队共享。
7.向所有相关人员提供清晰的测试结果,减少沟通,提高团队协作效率。
8.支持自定义插件,可扩展性强。


官方:https://docs.gameta.io/allure-report/

Allure安装配置


第一步:安装Java的JDK环境(推荐1.8版本)

第二步:安装Allure

  • 下载commandline地址:https://repo1.maven.org/maven2/io/qameta/allure/allure-commandline/

(1) mac/linux: 下载tar
(2) windows: 下载 zip

下载commandline包后,放在c盘或者d盘某个目录下面并解压

  • 配置环境变量:解压后将 bin 目录加入PATH环境变量

安装贴子:https://ceshiren.com/t/topic/3386
检测allure有没有安装好(win+r:输入cmd): allure --version

Allure使用生产测试报告

Allure配置依赖+pon.xml

<dependencies>
  <dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>RELEASE</version>
    <scope>test</scope>
  </dependency>
   <dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest</artifactId>
    <version>2.2</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-junit5</artifactId>
    <version>2.13.6</version>
    <scope>test</scope>
  </dependency>
</dependencies>

<properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <aspectj.version>1.8.10</aspectj.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M5</version>
            <configuration>
                <includes>
                    <include>**/*Test.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

在pom.xml中打开终端

举例

详细包名.类名为com.Test01

定制Allure

@Epic("这是一个大模块注解")

@Feature("这是子模块1注解")

七、关键字封装

作用:项目中经常要做的操作,可以提前封装,使用的时候,直接调用函数即可。
访问 下拉框 iframe 等待 关闭

selenium自动加载浏览器驱动依赖:

        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>4.4.1</version>
        </dependency>

封装登录不同浏览器的代码示例:

八、PO设计模式

        Page Object也就是PO,也可以叫POM,是Selenium自动化测试项目主流的设计模式之一。
        该模式将一个 Web项目分解为多个页面对象,每个页面对象代表程序中的一个页面或者一个独立的 UI 组件。通过封装页面元素和方法,可以实现对页面对象的访问和操作。

        PageObject设计模式:是将某个页面的所有"元素(包含控件)属性"及"元素操作"封装在1个类(Class)里面。若元素定位发生变化,只需要调整这个类中的代码。 

        举个例子:拿商城系统来说,商城系统流程为登录-选择商品-添加购物车-下单-支付

        现在使用PO模式来设计:登录类来封装登录页面操作相关的,商品类来封装商品页面操作相关的,购物车类来封装购物车页面操作相关

 好处:通过对界面元素的封装减少冗余代码,在后期维护中,若元素定位发生变化,只需调整页面元素封装的代码,提高测试用例的可维护性。

九、TestNg测试框架

Testng是一套开源测试的单元测试框架。它的灵感来源于JUnit,它的目的是优于JUnit。


TestNG和JUnit都是Iava中常用的单元测试框架,二者的共同点包括
1.都是基于注解的测试框架
2.都可以对Java代码进行单元测试
3.都支持断言机制

TestNG比Junit的优点如下:
1.TestNG支持更多的注解:@BeforeGroups、@AfterGroups等
2.TestNG支持并行测试,在测试大量数据时运行速度更快
3.TestNG可以在xml文件中配置测试用例,并且可以实现测试用例的分组执行,批量执行等功能
4.TestNG支持更多的参数化方法,比如@DataProvider;
5.TestNG可以在报告中生成时间轴图表,方便测试结果的分析。

TestNG环境依赖准备

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.14.3</version>
    <scope>test</scope>
</dependency>

TestNG注解

@BeforeSuite      在该套件的所有测试都运行在注释的方法之前,仅运行一次

@AfterSuite         在该套件的所有测试都运行在注释方法之后,仅运行一次

@BeforeClass      在调用当前类的第一个测试方法之前运行,注释方法仅运行一次

@AfterClass         在调用当前类的第一个测试方法之后运行,注释方法仅运行一次

@BeforeTest        注释的方法将在属于test标签内的类的所有测试方法运行之前运行

@AfterTest           注释的方法将在属于test标签内的类的所有测试方法运行之后运行

@BeforeMethod    注释方法将在每个测试方法之前运行

@AfterMethod      注释方法将在每个测试方法之后运行

@DataProvider     标记一种方法来提供测试方法的数据。 注释方法必须返回一个object[ ][ ],其中每个object[ ]可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称

@Factory             将一个方法标记为工厂,返回TestNG将被用作测试类的对象。该方法必须返回object[ ]

testng层级管理
BeforeSuite > BeforeTest > BeforeClass > BeforeMethod

TestNg运行方式


1.直接右键运行
2.xml方式运行,IDEA可以右键新建testng.xml来运行,在文件名和文件内部点击均可(具体操作方法自行百度

(1)IDEA创建的项目默认不会生成testng.xml(用于控制测试执行的执行)文件,就需要在根目录手动创建该文件。

(2)同时需要在pom.xml文件中关联设置testng.xml
(3)testng.xml可以安装testng插件

TestNG 断言


TestNG 断言是用于对测试结果进行验证的方法,可以判断测试是否通过或失败。TestNG 提供了一组方便易用的断言方法,可以在测试中使用。


1.assertEquals(Object expected, Object actual):判断两个对象是否相等,如果不相等则抛出AssertionError异常,并输出错误信息。

2. assertTrue(boolean condition):判断给定条件是否为 true,如果不为 true 则抛出 AssertionError 异常,并输出错误信息。

忽略测试注解@Ignore

用例执行顺序@Test( priority = ?)

超时注解@Test(timeOut = ?)

timeOut的属性的单位为毫秒

依赖测试注解@Test(dependsOnMethods={"测试方法名"})

TestNG并行测试

并行是指同时运行多个测试用例来提高测试效率。可以通过设置testng.xml配置文件中的“parallel”属性来启用并发测试。

@DataProvider 参数化注解 

@DataProvider注解必须和@test注解一起使用,不然没有任何意义

1、创建一个方法,方法的返回值必须是object[][]   或者object[]、lteraTor<object[]>的,在方法上加上@dataProvider注解

DataProvider的用途是:
(1)在执行用例的时候dataProvider迭代每组数据都是作为一个用例执行
(2)在测试数据有规律的情况下,免去了添加testXML测试数据的烦恼,直接将测试数据,按个或者组,放到dataProvider中即可
(3)注意:dataProvider作为数据提供者只能返回0bject和lteraTor<object[]>类型的数据。

1.定义一个函数,函数名随意取,使用@DataProvider注解,给provider取名字,该函数返回一个二维数组
2.使用参数时,用例中,带上name名

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2070475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学排列组合

我突然想发一篇文章(别问我为什么[doge]) 排列组合大家都听过吧,今天的主角就是排列组合。 废话不多说,直接开始 先来看几道题目&#xff1a; :由1&#xff0c;2&#xff0c;3&#xff0c;4组成不同的三位数有几种? :有四个人&#xff0c;每两个人都要握手一次&#xff0c;要握…

【秋招笔试】8.24美团秋招(算法岗)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

[JAVA] 什么是Java线程同步机制?

在单线程程序中&#xff0c;每次只能做一件事情&#xff0c;后面的事情需要等待前面的事情完成后才可以进行&#xff0c;如果使用多线程程序&#xff0c;就会发生两个线程抢占资源的问题&#xff0c;所以在多线程编程中&#xff0c;需要防止这些资源访问的冲突&#xff0c;Java…

LED显示屏原理及其系统组成

随着城市化进程的加快&#xff0c;LED显示屏的需求在各个行业中迅速增长。无论是用于广告宣传、信息发布&#xff0c;还是场馆显示&#xff0c;LED显示屏都扮演着重要的角色。然而&#xff0c;对于很多人来说&#xff0c;LED显示屏的工作原理及其系统组成可能并不为熟知。本文将…

589. N 叉树的前序遍历(递归法)

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;题目&#xff1a; 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示&#xff0c;每…

Java JNA调用C函数常见问题及解决方法

目录 1 undefined symbol&#xff1a;xxx2 Java映射C数组乱码3 Java使用String接收不到C函数返回的char*4 Unable to load DLL xxx.dll5 java.lang.UnsatisfiedLinkError: %1 不是有效的 Win32 应用程序6 无效的ELF头7 Structure array elements must use contiguous memory8 j…

备考计算机二级Python之Day4下篇

实例解析--猜数字游戏 编写一个“猜数字游戏”的程序&#xff0c;在1~1000之间随机产生一个数&#xff0c;然后请用户循环猜这个数字&#xff0c;对于每个答案只回答“猜大了”或“猜小了”&#xff0c;直到猜对为止。输出用户的猜测次数。 使用Python语言的随机标准库random…

开源游戏开发引擎LayaAir

LayaAir是一款由Layabox公司推出的次世代全平台3D引擎&#xff0c;它支持2D、3D、VR与AR产品的开发&#xff0c;并允许开发者一次开发后同时发布为Web、小游戏、Native APP等多种平台的产品。 LayaAir引擎提供强大的IDE集成环境&#xff0c;包含3D场景编辑器、材质编辑器、粒子…

【linux中高级命令】

杀进程 1、lsof列出所有打开的文件&#xff0c;‌包括网络连接&#xff0c;‌从而提供关于系统状态的宝贵信息‌ #可以直接查看端口的进程 lsof -i:端口获取到进程&#xff0c;使用kill命令和PID来终止进程 kill -9 [PID]2、列出使用该端口的进程信息&#xff0c;‌包括PID …

linux上datax 安装以及使用

前言 DataX 是一款由阿里巴巴开源的数据同步工具&#xff0c;旨在帮助用户实现不同数据源之间的高效数据迁移和同步。无论是从传统的关系型数据库、NoSQL 数据库&#xff0c;还是到大数据存储系统&#xff0c;DataX 都能够轻松应对各种数据同步需求。通过简单的配置和灵活的插…

【解压即玩】最终幻想7 重制版中文+预购特典+全DLC,难忘的一作

数年前&#xff0c;一家名为神罗的公司&#xff08;起初称为神罗工程所&#xff09;发现了一种深埋于地底的神秘生物遗骸&#xff08;被称为杰诺瓦&#xff09;以及一种名为“魔晄”的能源。这家公司通过将这种生物遗骸浸泡在魔晄中来生产电力&#xff0c;从而迅速崛起成为全球…

一套在线工具管理服务器+DB+Redis+Mongo等

Team IDE是一个基于Web的、集成了多种开发工具和服务&#xff08;MySql、Oracle、金仓、达梦、神通等数据库、SSH、FTP、Redis、Zookeeper、Kafka、Elasticsearch、Mongodb&#xff09;的一体化开发环境&#xff0c;它不仅为开发者提供了便捷的开发体验&#xff0c;还支持团队协…

【文本 >>> 语音】⭐️SpringBoot 结合 jacob 简单实现一个文本朗读功能

目录 &#x1f378;前言 &#x1f37b;一、环境准备 &#x1f37a;二、依赖引入 &#x1f49e;️三、简单启动 &#x1f379;四、接口改造 4.1 封装为一个工具类 4.2 暴露一个接口 4.3 测试 &#x1f331;五、扩展 &#x1f378;前言 小伙伴们大家好&#xff0c;上次…

初学Python如何快速入门(内附详细攻略),一文讲清

目前python可以说是一门非常火爆的编程语言&#xff0c;应用范围也非常的广泛&#xff0c;工资也挺高&#xff0c;未来发展也极好。 Python究竟应该怎么学呢&#xff0c;我自己最初也是从零基础开始学习Python的&#xff0c;给大家分享Python的学习思路和方法。一味的买书看书…

AI指挥细胞大变身,脑瘤生存率跃升75%?

“ 胶质母细胞瘤&#xff08;GBM&#xff09;&#xff0c;一种凶险的脑癌&#xff0c;曾让无数家庭陷入绝望。然而南加州大学凯克医学院的一项突破性研究&#xff0c;利用AI技术将脑癌细胞转化为免疫细胞&#xff0c;为GBM患者带来了前所未有的生存希望。 ” AI识别与重编程…

Windows系统注册表

一、修改文件图标 电脑程序怎么更换python文件的图标_mob64ca12d12b68的技术博客_51CTO博客 二、 1.打开注册的命令&#xff1a; 按winR快捷键&#xff0c;在弹出的窗口中输入&#xff1a;regedit 2.注册表样式 已学习至&#xff1a;0&#xff1a;47&#xff1a;32 课堂链…

OpenAI Sora:视频生成领域的创新力量

一、Sora 的诞生与技术原理 Sora 模型由 OpenAI 推出&#xff0c;其诞生背景与人工智能技术在多模态领域的不断探索和发展紧密相关。在视频数据日益丰富和重要的时代&#xff0c;对视频生成模型的需求愈发迫切&#xff0c;Sora 应运而生。 Sora 独特的技术原理使其在众多模型…

验证码短信怎么实现Java接口对接

在当今数字化时代&#xff0c;商家和企业对于用户身份验证的需求日益增强&#xff0c;这不仅是出于保护用户数据安稳的考虑&#xff0c;也是维护业务正常运营、防止欺诈行为的重要一环。在众多身份验证手段中&#xff0c;文字验证码短信因其便捷性和低成本特性&#xff0c;成为…

面向对象03:创建对象内存分析

本节内容视频链接&#xff1a;面向对象06&#xff1a;创建对象内存分析_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p65&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 创建对象时的内存分析涉及到理解对象如何在内存中分配和管理。‌这个过程在…