基于Java+Selenium的WebUI自动化测试框架(一)---页面元素定位器

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

对于自动化测试,尤其是UI的自动化测试。是很多做黑盒功能测试的同学,入门自动化测试一个最为直观的或者说最容易理解的途径之一。

 对于手工测试和自动化测试的优劣,网上有很多论述,在这里不作展开讨论。但是,让测试人员解放生产力,提高效率,把精力关注与最为重要的核心业务逻辑与测试设计上,是每个测试团队所必需要关注的。因此,在适当的范围内开展自动化测试,是可以提高整个测试团队的生产率的。

  对于Selenium,这个东西是一个浏览器应用程序测试工具。之所以选择它做WebUI的自动化测试主要是因为它有以下两大优势:

1.直接在浏览器中运行,就像真实用户所做的一样,可以模拟终端用户的操作,从最终客户的角度来测试应用程序。(这一点和黑盒功能测试很像吧。)

2.可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Chrome和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。(嗯,多面能手)

   对于Java语言,我只想说你用你最拿手的就好。一个好的测试人员,不应该被开发语言所束缚。不管是Java/Python/Ruby/C#.........只要你熟悉,就尽量把它用起来吧。语言只是工具。

   接下来,我们好好的慢慢的理解一些东西,然后来逐步的去写一点东西,来认识一下自动化测试框架是个什么东西。

 PS:阅读本文的同学,希望拥有JAVA语言编程基础,了解基本的JAVA语法与数据结构,同时,对Selenium的基本API有所了解。

 在写这个框架之前,我们要明确我们主要操作的对象是什么。------->页面元素。

我们要了解java在使用selenium时的基本操作。例如,使用以下代码:

driver.findElement(By.xpath("/html/body/div/div/div[2]/form/button")).click();

在这里,driver的意思是定义的WebDriver,findElement是driver这个对象调用的方法----->寻找页面元素,By.xpath是定位页面元素的方式,(“/html/body/div/div/div[2]/form/button”)是定位页面元素的参数,

.click()是找到页面元素后的动作------->点击。

   那么,我们在这里考虑一下。对于通常的黑盒功能测试中,我们想在网页上面去找一个地方,进行点击或者输入文字等操作的时候,

我们一般会这样说:“用户名输入admin,密码是abcd”。

但是对于测试的代码来说,实际上有可能是:“找到页面元素ID是UserId的元素,使用sendKeys方法,参数为admin,找到页面元素ID是Password的元素,使用sendKeys方法,参数是abcd”。

需要解决的问题:

用户名(我们说的)--------->找到页面元素ID是UserId的元素(代码),输入admin(我们说的)--------->使用sendKeys方法,参数为admin。(代码)

    一个页面元素的寻找需要几个要素,寻找的方式,寻找的参数,等待的时间。另外,为了我们说的话,代码能够明白,需要加上一个名字,用来告诉代码。

    我们需要自己定义一个类,这个类就是页面元素类。通过上面的说明,我们知道这个类中需要定义的基本变量。(定位方法,路径,名字),另外,寻找路径需要时间,我们再加上一个时间。

复制代码

package webui.xUtils;public class Position {private String path; //----->路径//位置名字,就是我们通常意义上叫的名字。例如:用户名输入框private String positionName;private ByType type;//定位方法private int waitSec;//等待时间//selenium的基本八种定位方法。public enum ByType{xpath,id,name,className, cssSelector,tagName, partialLinkText,linkText }public String getPath() {return path;}public void setPath(String path) {this.path = path;}public String getPositionName() {return positionName;}public void setPositionName(String positionName) {this.positionName = positionName;}public ByType getType() {return type;}public void setType(ByType type) {this.type = type;}public Position(String path, ByType type, String positionName) {super();this.path = path;this.positionName = positionName;this.type = type;}//这种可以看作是针对iframe的情况public Position(String path,String positionName) {super();this.path = path;this.positionName = positionName;}public Position(String path, int waitSec, ByType type, String positionName) {super();this.path = path;this.waitSec = waitSec;this.positionName = positionName;this.type = type;}public int getWaitSec() {return waitSec;}public void setWaitSec(int waitSec) {this.waitSec = waitSec;}
}       

复制代码

    使用上面的代码,我们就定义了最初的一个Position类,这就是我们要寻找的页面元素。

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

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

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

相关文章

使用python查看官网是否发布新的内容

目录 前言 第一章、python介绍和使用pip install下载包 1.python介绍 2.使用vscode编写python 3.pip install的使用 第二章、查看官网是否发布新的内容 第三章、代码实现 目录结构 代码实现 check_new_news.py files.py news.py main.py file.txt 运行演示 前言 也…

【Azure 架构师学习笔记】- Azure Databricks (7) --Unity Catalog(UC) 基本概念和组件

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog 前言 在以前的Databricks中,主要由Workspace和集群、SQL Warehouse组成, 这两年Databricks公…

我们在SqlSugar开发框架中,用到的一些设计模式

我们在《SqlSugar开发框架》中,有时候都会根据一些需要引入一些设计模式,主要的目的是为了解决问题提供便利和代码重用等目的。而不是为用而用,我们的目的是解决问题,并在一定的场景下以水到渠成的方式处理。不过引入任何的设计模…

【YOLOX-nano】YOLOX-nano的推理实践

目录 1 pt文件和pth文件的区别 2 安装依赖库 3 模型下载 4 实践 YOLOX-nano.pth模型转换为YOLOX-nano.onnx模型</

SpringBoot对于SpringMVC的支持

创建项目 版本说明这里使用的 SpringBoot 2.0.0.Release SpringBoot对于SpringMVC的支持 在之前的开发中很多场景下使用的是基于xml配置文件或者是Java配置类的方式来进行SpringMVC的配置。一般来讲&#xff0c;初始的步骤如下所示 1、初始化SpringMVC的DispatcherServlet2、…

pytest结合Allure生成测试报告

文章目录 1.Allure配置安装2.使用基本命令报告美化1.**前置条件**2.**用例步骤****3.标题和描述****4.用例优先级**3.进阶用法allure+parametrize参数化parametrize+idsparametrize+@allure.title()4.动态化参数5.环境信息**方式一****方式二**6.用例失败截图1.Allure配置安装 …

Jmeter基础(2) 目录介绍

目录 Jmeter目录介绍bin目录docsextrasliblicensesprintable_docs Jmeter目录介绍 在学习Jmeter之前&#xff0c;需要先对工具的目录有些了解&#xff0c;也会方便后续的学习 bin目录 examplesCSV目录中有CSV样例jmeter.batwindow 启动文件jmeter.shMac/linux的启动文件jmete…

web安全学习笔记【15】——信息打点(5)

信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件 #知识点&#xff1a; 1、业务资产-应用类型分类 2、Web单域名获取-接口查询 3、Web子域名获取-解析枚举 4、Web架构资产-平台指纹识别 ------------------------------------ 1、开源-CMS指…

基于springboot财务管理系统源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了

引言 C语言是一门面向过程的、抽象化的通用程序设计语言&#xff0c;广泛应用于底层开发。它在编程语言中具有举足轻重的地位。 此文为【C语言必知必会】系列第一篇&#xff0c;带你初步了解C语言&#xff0c;为之后的学习打下基础 文章目录 1️⃣发展历史2️⃣语言特点3️⃣语…

论文精读--GPT2

被BERT敲打了&#xff0c;但是仍然坚持解码器架构 Abstract Natural language processing tasks, such as question answering, machine translation, reading comprehension, and summarization, are typically approached with supervised learning on taskspecific dataset…

使用代理IP技术实现爬虫同步获取和保存

概述 在网络爬虫中&#xff0c;使用代理IP技术可以有效地提高爬取数据的效率和稳定性。本文将介绍如何在爬虫中同步获取和保存数据&#xff0c;并结合代理IP技术&#xff0c;以提高爬取效率。 正文 代理IP技术是一种常用的网络爬虫技术&#xff0c;通过代理服务器转发请求&a…

idea和jdk之间对应的版本(idea支持的jdk版本)

idea如果和jdk版本不对应&#xff0c;就会出现无法运行的情况&#xff0c;如下&#xff1a; 翻译&#xff1a;无法确定17的“tools.jar”库的路径&#xff08;C:\Program Files\Java\jdk-17&#xff09; 原因&#xff1a;idea版本是2020.2&#xff0c;而jdk版本是17&#xff0…

动态规划-

关键词&#xff1a; 重叠子问题&#xff1b;每一个状态一定是由上一个状态推导出来(类似数列a^n f(a^n-1,a^n-2)) 步骤&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 题目&#…

01_02_mysql06_(视图-存储过程-函数(变量、流程控制与游标)-触发器)

视图 使用 视图一方面可以帮我们使用表的一部分而不是所有的表&#xff0c;另一方面也可以针对不同的用户制定不同的查询视图。比如&#xff0c;针对一个公司的销售人员&#xff0c;我们只想给他看部分数据&#xff0c;而某些特殊的数据&#xff0c;比如采购的价格&#xff0…

【2024软件测试面试必会技能】Unittest(6):unittest_构建测试套件

构建测试套件 在实际项目中&#xff0c;随着项目进度的开展&#xff0c;测试类会越来越多&#xff0c;可是直到现在我 们还只会一个一个的单独运行测试类&#xff0c;这在实际项目实践中肯定是不可行的&#xff0c;在 unittest中可以通过测试套件来解决该问题。 测试套件&…

目标检测-Transformer-ViT和DETR

文章目录 前言一、ViT应用和结论结构及创新点 二、DETR应用和结论结构及创新点 总结 前言 随着Transformer爆火以来&#xff0c;NLP领域迎来了大模型时代&#xff0c;成为AI目前最先进和火爆的领域&#xff0c;介于Transformer的先进性&#xff0c;基于Transformer架构的CV模型…

C语言深入剖析——函数栈帧的创建与销毁

目录 0.前言 1.什么是函数栈帧 1.1栈帧的组成 1.2栈帧的作用 1.3栈帧的管理 2.理解函数栈帧的作用 3.解析函数栈帧的创建与销毁 3.1栈的介绍 3.2寄存器简介 3.3汇编指令简介 3.4具体过程解析 3.4.1预备知识 3.4.2函数的调用堆栈 3.4.3转到反汇编 3.4.4函数栈帧的…

【Python_Zebra斑马打印机编程学习笔记(一)】实现标贴预览的两种方式

实现标贴预览的两种方式 实现标贴预览的两种方式前言一、调用 Labelary Online ZPL Viewer API 方法实现标贴预览功能1、Labelary Online ZPL Viewer API 案例介绍2、生成 PNG 格式3、Parameters 二、通过 zpl 的 label.preview() 方法实现标贴预览功能1、实现步骤2、代码示例 …

Python实战:读取MATLAB文件数据(.mat文件)

Python实战&#xff1a;读取MATLAB文件数据(.mat文件) &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您的订阅…