selenium自动化测试框架

news2024/11/20 23:31:22

一、Selenium自动化测试(基于python)

1、Selenium简介:

1.1 Selenium是一款主要用于Web应用程序自动化测试的工具集合。Selenium测试直接运行在浏览器中,本质是通过驱动浏览器,模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器如,chorme,FireFox,IE等。

1.2 Selenium WebDriver:业界通用的测试框架,不仅是web测试的标准,同时在移动测试领域也是底层的核心驱动框架;

1.3 Python是动态语言;

1.4 Selenium包括一系列的工具组件:

1)Selenium IDE:是嵌入到FireFox浏览器的插件,用于在Firefox上录制和回放Selenium脚本,虽然只能在Firefox下使用,但它能将录制好的脚本转换成各种Selenium WebDriver支持的程序语言,进而扩展到更广泛的浏览器类型;

   2) Selenium WebDriver:可支持多种语言,用于操作浏览器的一套API;支持各类型浏览器,跨操作系统,WebDriver为诸多语言提供完备的,用于实现web自动化测试的第三方库;

   3) Selenium Standalone Server:包括Selenium Grid、远程控制、分布式部署等,均可实现Selenium脚本的高效执行与拓展;利用Grid使得自动化测试可以并行运行,甚至在跨平台、异构的环境中运行;

2、基于python的selenium WebDeriver环境安装

Selenium可以自动操纵浏览器来做很多,如模拟与浏览器的交互,而且支持到多数主流浏览器;首先需要选择一门语言来编写自动化脚本,而这门语言需要有Selenium client library支持,选择Python;

2.1 安装python和selenium,不同安装版本可在平台下载

1)安装selenium

Win:pip install selenium
Mac:  pip3 install selenium

2)安装WebDriver, 该工具供selenium使用Chrome。(注:webdriver需要和对应的浏览器版本以及selenium版本对应)

 3)WebDriver安装路径

 Win:复制webdriver到Python安装目录下
 Mac:复制webdriver到/usr/local/bin目录下

2.2 PyCharm设置

1)PyCharm有两个版本:社区版和专业版,社区版是免费的,可以下载使用;

2) 在使用PyCharm时,需要配置Python的解释器,我们选择支持selenium的Python版本解释器;

3、Selenium WebDriver基于Python实现脚本

  3.1 根据webDriver提供的一系列对象定位方法,获取元素,实现测试用例

  3.2 webDriver常见的元素定位方法有:

① id定位:find_element_by_id()

② name定位:find_element_by_name()

③ class定位:find_element_by_class_name()

④ link定位:find_element_by_link_text()

⑤ partial link定位:find_element_by_partial_link_text()

⑥ tag定位:find_element_by_tag_name()

⑦ xpath定位:find_element_by_xpath()

⑧ css定位:find_element_by_css_selector()
 

4、unittest编写单元测试并输出测试报告

仅使用Selenium WebDriver,还有一些无法实现的:比如 实现执行测试前置条件、测试后置条件,比对预期结果和实际结果,检查程序的状态,生成测试报告等功能;因此需要使用unittest来创建基于Python的Selenium WebDriver测试脚本;

4.1 什么是unittest

Unittest一般也称为PyUnit,是从java程序开发中广泛应用的Unit启发而来,可以使用unittest为项目创建全面的测试套件,unittest具备创建测试用例、测试套件,测试夹具的能力;

unitest组件:

1)Test Fixture(测试夹具):可以定义在单个或多个测试执行之前的准备工作和测试执行之后的清理工作;

2)Test Case(测试用例):unittest中执行测试的最小单元,通过验证unittest提供的assert方法来验证一组特定的操作和输入以后得到的响应,unittest提供了一个名为TestCase的基础类,可以用来创建测试用例;

3)Test Suit(测试套件):一个测试套件是多个测试或测试用例的集合,是针对被测程序的对应的功能和模块创建的一组测试,一个测试套件内的测试用例将一起执行;

4)Test Runner(测试执行器):测试执行器负责测试执行调度并且生成测试结果给用户,测试执行器可以使用图形界面、文本界面或者特定的返回值来展示测试执行结果;

5)Test Report(测试报告):测试报告展示所有执行用例的成功或者失败状态的汇总,包括失败的测试步骤的预期结果和实际结果,还有整体运行状况和运行时间的汇总;

4.2 使用unittest来编写Selenium WebDriver测试

1)Arrange:初始化前置条件,初始化被测试的对象,相关配置和依赖;

2)Act:执行功能操作;

3)Assert:用来校验实际结果与预期结果是否一致;

4.3 使用TestCase类来实现一个测试

 1)集成TestCase类并且在测试类中为每一个测试添加测试方法来创建单个测试或者一组测试;

2)TestCase中的assert方法,最主要的任务是 调用assertEqual()来校验结果;assertTrue()来验证条件;assertRaises来验证预期的异常,除了添加测试,还可以添加测试夹具,setUp()方法和tearDown()方法;

3)一个测试用例是从setUp()方法开始执行,因此可以在每个测试开始前执行一些初始化的任务;此方法无参数,也无返回值,接着编写test方法,这些测试方法命名为test开头,这种命名约定通知test runner哪个方法代表测试方法;

注:test runner能找到的每个测试方法,都会在执行测试方法之前先执行setUp()方法,这样有助于确保每个测试方法都能够依赖于相同的环境。

4)tearDown()方法会在测试执行完成之后调用,用来清理所有的初始值;

5)为了能通过命令行测试,我们可以在测试中添加对main方法的调用;我们将传递verbosity参数以便使详细的测试结果展示在控制台;

  测试用例代码如下图(Testcase01.py),如果测试通过则,浏览器最后会退出,如果出错的话,控制台则会打印出相关信息,

4.4 为一组测试创建TestSuite

   1) 应用unittest的TestSuites特性,可以将不同的测试组成一个逻辑组,然后设置统一的测试套件,并通过一个命令来执行;具体通过TestSuites、TestLoader和TestRunner类来实现的;

2)使用TestSuites类来定义和执行测试套件,将多个可测试加到一个测试套件中,还可以用TestLoader和TextTestRunner创建和运行测试套件,举例如下图(TestSuites.py);

4.5使用unittest扩展来生成HTML格式的测试报告

     unittest的扩展HTMLTestRunner可以实现生成测试报告。生成的的测试报告格式更加友好,既能够查看测试结果,又能深入各个细节。举例代码如下图(testsuiteshtml.py)

测试报告如下图(TestReport)

5、总结

     以上所写内容主要是selenium基于python,使用WebDriver、Unittest组件,使用元素定位方式,完成测试用例,输出测试报告的简单步骤,具体实际操作中可能会遇到其它问题,具体问题具体解决。

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

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

相关文章

测试碎碎念(基础篇_2)

一、软件测试的基础概念1.1 需求在企业中,需求 主要分为 用户需求 和 软件需求~用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务;用户需求 一般是比较简略的&#xf…

Flink官方例子解析:带窗口的WordCount

1. 简介 本篇介绍的是带窗口的WordCount,使用窗口函数countWindow。 countWindow是一种计数窗口,有固定窗口和滑动窗口两种用法。 1.1 固定窗口 countWindow(windowSize) , windowSize指的是窗口大小。 例如countWindow(5), 说明一个窗口可…

零基础机器学习做游戏辅助第七课--模型的保存与加载

一、保存模型 当我们训练好模型后将它保存下来,这样下次使用时就可以直接加载模型进行工作了。 常见的保存模型有三种: 只保存权重文件:model.save_weights(num_weights) 当我们使用save_weights保存权重文件时,没有指定后缀名,则会保存三个文件在指定目录下

linux 下ARC的中断机制

linux 下ARC的中断机制 一、Idu 中断控制器初始化 Idu 是arc 处理器内部中断控制模块, 类似于arm 内部的gic 中断控制模块 首先,Idu中断控制器在初始化时, 会解析DTS信息中定义了几个idu控制器,每个Idu控制器注册一个struct irq_domain数据…

嵌入式Linux系统开发笔记(十三)

U-Boot烧写验证测试 正点原子专门编写了一个软件来将编译出来的.bin 文件烧写到 SD 卡中,这个软件叫做“imxdownload” 【1】将 imxdownload 拷贝到工程根目录下 【2】给予 imxdownload 可执行权限 我们直接将软件 imxdownload 从 Windows 下复制到 Ubuntu 中以…

【干货】Windows下cmd中cd命令的使用方法

【干货】Windows下cmd中cd命令的使用方法什么是cd命令cd命令的使用打开cmdcd命令的常用方法进入某个盘进入某个目录返回上一级目录返回至当前工作目录下的根目录参考什么是cd命令 此处介绍两个概念: cmd:命令提示符cd:全称change directory…

model.train()与model.val()

一、问题描述 需要将mmpose框架下训练的模型单独保存出来,做后续处理。用torch.save()直接保存模型mmpose_model.pt,然后重新搭建模型,把保存的模型参数加载进去,得到scratch_model.pt使用scratch_model.pt进行推理,与…

基于Jmeter的百万级tps性能测试实践

【CSDN 编者按】如何对系统的承载能力和响应时间做出准确的评估,为资源的合理配置及优化提供依据,性能测试就成了必不可少的测试手段,本文会给读者推荐一款业界占有率最高的一款性能测试工具——Jmeter。 本文作者朱凯是环信测试主管&#x…

TCP实现回显服务器及客户端

目录 前言: Socket API SeverSocket API TCP中的长短连接 TCP实现回显服务器 代码实现(有详细解释) TCP实现回显客户端 代码实现(有详细注释) 小结: 前言: 上篇文章介绍了TCP的特点。由…

195136-58-4,2‘,7‘-Difluorofluorescein,2,7-二氟荧光素

产品描述:2,7-二氟荧光素中Fluorescein (Uranine) 生物应用中的荧光示踪剂,Fluorescein (Uranine) 是一种具有代表性的绿色荧光团,已被广泛用作实用绿色荧光探针的支架。结构式:理论分析:中文名&#xff1a…

1608_PC汇编语言_first例程分析

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这一次的笔记主要是梳理一个例程以及部分辅助信息。 为什么要学习汇编语言呢?现在的高级语言开发效率高,而且有着不错的效率,是…

Compose之跨平台Activity页面

前言 Compose(Jetpackjb)是可以跨平台的 目前跨平台主流的页面导航方式一般有两种 一种是都在同一个页面内进行页面替换类型的导航,类似于单Activity,多Fragment 另一种是不同的页面在不同的页面载体上,类似多Activity 两种页面导航方式都可以使用,但我比较偏向于使用多Ac…

加密签名算法

序言如果我们要消费的一段字符串没有唯一标识,我们该如何防止重复消费.cuiyaonan2000163.com背景信息加密加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原&…

【虚拟仿真】Unity3D中实现鼠标悬浮模型上显示文字

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 在仿真项目开发中,会遇到让鼠标悬浮模型后显示模型…

《流浪地球2》MOSS出圈,现实中的量子计算机长啥样?

科技云报道原创。 春节档科幻电影《流浪地球2》上映后,影片中被誉为“全场最有价值道具”的智能量子计算机MOSS(代号550W)火了! 如果你看完了片尾彩蛋,会发现MOSS或许是整个流浪地球系列电影中的最大反派&#xff0c…

支持向量机-数学模型

支持向量机(support vector machines, SVM)是一种二分类模型。基本模型是定义在特征空间上的间隔最大的线性分类器;学习策略:间隔最大化;学习算法:求解凸二次规划的最优化算法。 支持向量机分为线性可分支…

自动驾驶感知——激光雷达基本概念|激光雷达点云|激光雷达的标定

文章目录1. 激光雷达基本概念1.1 激光雷达特点1.2 激光雷达测距原理1.2.1 系统组成1.2.2 激光雷达测距原理1.3 常见的激光雷达1.3.1 机械旋转式激光雷达1.3.2 Velodyne HDL-64E1.3.3 固态激光雷达1.3.4 Flash型固态激光雷达1.3.5 相控阵固态激光雷达1.3.6 MEMS型固态激光雷达1.…

NX二开ufun函数UF_MODL_create_surf_from_cloud(使用现有点创建B曲面)

本节主要讲使用现有点创建B曲面的ufun函数UF_MODL_create_surf_from_cloud,这些点可以按任何顺序出现,但是必须有足够的点来定义平面。 先看实例效果图: 1、函数结构 int UF_MODL_create_surf_from_cloud ( int point_cnt&#…

双栏Latex模板插入多个图片的各种排布

目录 问题描述: 问题解决: 1. 插入一个图片 示意图如下: 2.插入2x1两个图片:2x1 示意图如下: 3. 插入1x2两个图片:1x2 示意图如下: 4.插入2x2两个图片:2x2 示意图如下&…

shell脚本set -eu引起的学习笔记

本文将介绍Bash中 set -euxo pipefail 大佬的文章学习膜拜体验,它们可以帮助你写出更容易维护也更安全的脚本。这也是Bash脚本的终极调试手段,希望你以后在自己的脚本中加上这么一行,头顶也能少秃一点 今天打开一个脚本《JetsonNano使能SPI总…