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

Selenium自动化测试

一、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),如果测试通过则,浏览器最后会退出,如果出错的话,控制台则会打印出相关信息,

 

                            (图-Testcase01.py)

4.4 为一组测试创建TestSuite

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

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

 

                        (图-TestSuites.py)

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

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

 (图-testsuiteshtml.py)

  测试报告如下图(TestReport)

 

5、总结

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

Python接口自动化测试零基础入门到精通(2023最新版)

相关文章:

Selenium自动化测试

一、Selenium自动化测试(基于python) 1、Selenium简介: 1.1 Selenium是一款主要用于Web应用程序自动化测试的工具集合。Selenium测试直接运行在浏览器中,本质是通过驱动浏览器,模拟浏览器的操作,比如跳转…...

Lua调用C#类

先创建一个Main脚本作为主入口,挂载到摄像机上 public class Main : MonoBehaviour {// Start is called before the first frame updatevoid Start(){LuaMgr.GetInstance().Init();LuaMgr.GetInstance().DoLuaFile("Main");}// Update is called once p…...

“react“: “^16.14.0“,打开弹窗数据发生变化

“react”: “^16.14.0”, 弹窗 打开弹窗数据发生变化 // 这里对比changeHistoryVisible是否发生改变调用后端方法改变数据componentDidUpdate(prevProps) {if (prevProps.changeHistoryVisible ! this.props.changeHistoryVisible && this.props.changeHistoryVisi…...

MySQL数据库varchar字段求和出现精度丢失

问题描述 在MySQL数据库中,将varchar字段用于数值运算时,会将其转换为数值类型进行计算。然而,由于varchar字段的可变长度特性,可能存在数值精度丢失的问题。 我用varchar类型存储学生的分数,分数有两位小数&#xff…...

C++入门 第二篇( 引用、内联函数、auto关键字、指针空值nullptr)

目录 6. 引用 6.1 引用概念 6.2 引用特性 6.3 常引用 正确用法:权限 缩小/平移 6.4 使用场景 1. 做参数 2. 做返回值 3.传值、传引用效率比较 6.5引用问题举例 6.6 反汇编中的& 6.7 引用和指针的不同点: 7.内联函数 7.1 内联函数与宏对…...

2023年煤气证模拟考试题库及煤气理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年煤气证模拟考试题库及煤气理论考试试题是由安全生产模拟考试一点通提供,煤气证模拟考试题库是根据煤气最新版教材,煤气大纲整理而成(含2023年煤气证模拟考试题库及煤气理论考…...

嵌入式面试经典30问

嵌入式面试经典30问 很多同学说很害怕面试,看见面试官会露怯,怕自己的知识体系不完整,怕面试官考的问题回答不上了,所以今天为大家准备了嵌入式工程师面试经常遇到的30个经典问题,希望可以帮助大家提前准备&#xff0…...

C++ 八股文: 构造函数

什么是构造函数 构造函数(Constructor)是一种特殊的成员函数,用于在创建对象时进行初始化。它的作用是确保对象在创建后处于一个合法和可用的状态。构造函数在类定义中声明,其名称与类名相同,但不带返回类型。 写一个…...

自动切割短视频的软件推荐,一键生成1000条短视频,支持六大主流平台矩阵分发,快来免费试用

经过小编的多方测评,今天给大家推荐一款性价比、好评率、专业性全都超高的软件——超级编导批量剪辑软件,更重要的是这款软件支持免费试用,一起来看看超级编导如何帮助大家自动分割视频的吧。 复制视频链接,一键上传视频素材后&am…...

从零开始学习秒杀项目

构思了很多种讲述这个简易版的秒杀项目的思路,比如按照功能分类,按照项目亮点串起来讲述,总觉得不适合基础薄弱的同学来学习,所以本项目按照从搭建开始,过程中需要什么来学习什么。 技术栈 SpringBootmybatisPlus&am…...

儿童珠宝首饰上亚马逊美国站合规标准是什么?如何办理?

儿童珠宝首饰 儿童珠宝首饰指原则上由 12 岁及以下儿童作为装饰品移除或穿戴的商品。本政策涵盖的儿童珠宝首饰,包括但不限于脚链、手链、耳环、项链、戒指、珠宝首饰制作或维修套装以及钟表。 亚马逊儿童珠宝首饰政策 亚马逊要求所有儿童珠宝首饰均经过检测并符合…...

ORACLE 19C PDB FOR MYSQL 5.7 部署ogg

一、--软件配置 角色 数据库/软件版本 OGG版本 IP ---------- ----------------- ------------------------------- ----------- 源端服务器 Oracle Datbase 19 Oracle C##GOLDENGATE 19.1.0.0.4 10.10.10.32 目标服务器 MYSQ…...

前端 html 中的 meta 标签有哪些用处?

HTML中的<meta>标签用于提供有关文档的元数据&#xff08;metadata&#xff09;&#xff0c;它们不会在页面上显示出来&#xff0c;而是提供有关页面的信息&#xff0c;使搜索引擎和浏览器能够更好地理解和使用文档。下面是一些常见的用途&#xff1a; 1、指定文档的字符…...

罗技鼠标接收器丢失或损坏后用另一个接收器配对的方法

本文介绍罗技鼠标在丢失、损坏其自身原有的接收器后&#xff0c;将另一个新的接收器与原有鼠标相互配对的方法。 在开始之前&#xff0c;大家需要首先查看两个内容&#xff1a;首先是原有的鼠标——大家需要查看自己的鼠标&#xff08;罗技键盘也是同样的操作&#xff09;底部&…...

Python语法

文章目录 一、Python基础1. 数据类型和变量2. 字符串和编码字符编码Python的字符串格式化 3. list和tuplelisttuple 4.条件判断5. 模式匹配6. 循环7. dict 和 setdictset 二、函数1. 调用函数2. 定义函数3. 函数的参数4. 递归函数 三、高级特性四、函数式编程1. 高阶函数2. 返回…...

电脑经营商城小程序的作用是什么

电脑是企业办公必备的工具&#xff0c;同时很多家庭都有配备&#xff0c;无论笔记本还是台式在各场景中应用都非常广泛&#xff0c;市场各类品牌也很多&#xff0c;区别于以前店内购买&#xff0c;现在不少消费者会选择线上电商平台购买&#xff0c;也因此如今电脑经销商或品牌…...

森海塞尔EW-DP SKP直插式发射机:真正的无失真录制

韦德马克&#xff0c;2023年9月15日 – 10月底&#xff0c;EW-DP系列将再添新品——EW-DP SKP直插式发射机&#xff0c;面向摄像师、广播电视公司和电影制作人。板载32位浮点录制&#xff0c;结合该系列领先的134 dB发射机动态范围&#xff0c;让音频失真不复存在。无论要在现场…...

通过小程序实现会议Oa的会议展示以及个人中心

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《微信小程序 》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;…...

STM32驱动GY-39监测环境温度,湿度,大气压强,光强度

目录 模块简介模块测试接线代码测试现象 总结 模块简介 GY-39 是一款低成本&#xff0c;气压&#xff0c;温湿度&#xff0c;光强度传感器模块。工作电压 3-5v&#xff0c;功耗小&#xff0c;安装方便。 其工作原理是&#xff0c;MCU 收集各种传感器数据&#xff0c;统一处理&…...

在华为和比亚迪干了5年测试,月薪25K,熬夜总结出来的划水经验.....

先简单交代一下背景吧&#xff0c;某不知名 985 的本硕&#xff0c;17 年毕业加入华为&#xff0c;之后跳槽到了比亚迪&#xff0c;一直从事软件测试的工作。之前没有实习经历&#xff0c;算是5年的工作经验吧。 这5年之间完成了一次晋升&#xff0c;换了一家公司&#xff0c;…...

SpringBoot+MySQL家政服务平台 设计开发

概述 基于SpringBootMySQL开发的家政服务平台完整项目&#xff0c;该系统实现了用户预约、服务管理、订单统计等核心功能&#xff0c;采用主流技术栈开发&#xff0c;代码规范且易于二次开发。 主要内容 系统功能架构 本系统采用前后端分离架构&#xff0c;前端提供用户交互…...

AT_abc409_e [ABC409E] Pair Annihilation

AT_abc409_e [ABC409E] Pair Annihilation 赛时没开longlong挂了。 思路 首先我们可以把这棵树转化为一颗有根树&#xff0c;且所有电子的都朝根节点移动。 那么接下来我们就需要选择一个最优的树根。 考虑换根dp。 但是可以发现换根时答案其实是没有变化的。 我们设 f…...

MySQL从入门到DBA深度学习指南

目录 引言 MySQL基础入门 数据库基础概念 MySQL安装与配置 SQL语言进阶 数据库设计与规范化 数据库设计原则 表结构设计 MySQL核心管理 用户权限管理 备份与恢复 性能优化基础 高级管理与高可用 高可用与集群 故障诊断与监控 安全与审计 DBA实战与运维 性能调…...

【HarmonyOS 5】游戏开发教程

一、开发环境搭建 ‌工具配置‌ 安装DevEco Studio 5.1&#xff0c;启用CodeGenie AI助手&#xff08;Settings → Tools → AI Assistant&#xff09;配置游戏模板&#xff1a;选择"Game"类型项目&#xff0c;勾选手机/平板/折叠屏多设备支持 二、游戏引擎核心架构…...

F(x, y, z) = 0 隐函数微分 确定自变量

多元隐函数偏导的通用公式&#xff1a; 设一个隐函数由三元函数定义&#xff1a; F ( x , y , z ) 0 F(x, y, z) 0 F(x,y,z)0 且假设 z z ( x , y ) z z(x, y) zz(x,y)&#xff0c;即 z z z 是 x , y x, y x,y 的函数&#xff0c;满足这个等式恒成立。则有以下公式&am…...

Github 2025-06-05 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2025-06-05统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10TypeScript项目1Go编程语言:构建简单、可靠和高效的软件 创建周期:3474 天开发语言:Go协议类型:BSD 3-Clause “New” or “Revise…...

(2025)Windows修改JupyterNotebook的字体,使用JetBrains Mono

(JetBrains Mono字体未下载就配置,这种情况我不知道能不能行,没做过实验,因为我电脑已经下载了,不可能删了那么多字体做实验,我的建议是下载JetBrains Mono字体,当你使用VsCode配置里面的JetBrains字体也很有用) 首先参考该文章下载字体到电脑上 VSCode 修改字体为JetBrains …...

学习使用YOLO的predict函数使用

YOLO的 result.py #2025.1.3 """ https://docs.ultralytics.com/zh/modes/predict/#inference-arguments 对yolo 目标检测、实例分割、关键点检测结果进行说明https://docs.ultralytics.com/reference/engine/results/#ultralytics.engine.results.Masks.xy 对…...

【Matlab】连接SQL Server 全过程

文章目录 一、下载与安装1.1 SQL Server1.2 SSMS1.3 OLE DB 驱动程序 二、数据库配置2.1 SSMS2.2 SQL Server里面设置2.3 设置防火墙2.4 设置ODBC数据源 三、matlab 链接测试 一、下载与安装 微软的&#xff0c;所以直接去微软官方下载即可。 1.1 SQL Server 下载最免费的Ex…...

Markdown基础(1.2w字)

1. Markdown基础 这次就没目录了&#xff0c;因为md格式太乱了写示例&#xff0c;展示那些都太乱了&#xff0c;导致目录很乱。 &#xff08;我是XX&#xff0c;出现了很多错误&#xff0c;有错误和我说&#xff09; 1.1 Markdown简介 Markdown是一种轻量级的标记语言&#…...