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)有两个版本:社区版和专业版,社区版是免费的,可以下载使用;

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);

             (图-TestSuites.py)

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

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

(图-testsuiteshtml.py)

  测试报告如下图(TestReport)

5、总结

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

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

 

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

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

相关文章

浪潮信息KeyarchOS——保卫数字未来的安全防御利器

浪潮信息KeyarchOS——保卫数字未来的安全防御利器 前言 众所周知,目前流行的操作系统有10余种,每一款操作系统都有自己的特点。作为使用者,我们该如何选择操作系统。如果你偏重操作系统的安全可信和稳定高效,我推荐你使用浪潮信…

[网鼎杯 2020 朱雀组]phpweb1

提示 call_user_func()函数先通过php内置函数来进行代码审计绕过system(##不止一种方法) 拿到题目养成一个好的习惯先抓个包 从抓到的包以及它首页的报错来看,这里死活会post传输两个参数func以及p func传输函数,而p则是传输参数的…

Cloak斗篷技术不知道?超实用干货,FP商家必读!

都2023年了,还有很多人犹豫要不要入局独立站。心动不如行动,如果想要在跨境独立站中干出一番新事业,要赶紧动起来。部分卖家在出海初期,都想着出售FP产品,涉及到FP产品,各大主流平台上都有严格的审核机制&a…

外贸行业的CRM系统和其它CRM有什么区别?

外贸行业对客户管理的追求日益提高,为了应对客户需求的变化和多元性,外贸企业需要借助CRM管理系统实现智能管理。下面,我们将详细探讨外贸CRM的概念、特点和具体应用。 什么是外贸CRM? 外贸CRM是指针对外贸行业的客户关系管理系…

菜鸟学习日记(python)——推导式

python中的推导式是一种独特的数据处理方式,可以从一个数据序列去构建另一个新的数据序列的结构体。 它包括以下推导式: 列表(list)推导式字典(dict)推导式集合(set)推导式元组&am…

基于JAVA+SpringBoot+Vue的前后端分离的旅游网站

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 近年来,随…

一文详解Java反射

文章目录 反射是什么?反射的作用所有方法汇总一、加载Class对象二、加载类的构造器对象三、加载类的成员变量四、加载类的成员方法 反射是什么? 反射就是:加载类,并允许以编程的方式解剖类中的某个成分(成员变量&#…

windows系统nodeJs报错node-sass npm ERR! command failed

报错信息 npm WARN deprecated request2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated tar2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asa…

数组的查找:线性查找,二分查找

数组的查找:线性查找,二分查找 主要包含线性查找、二分查找 线性查找 先复习一下数组:数据结构复习:链表、数组、栈、队列、哈希表、堆、二叉树-CSDN博客 即便数据没有按顺序存储,也可以应用线性查找。 查找数字:首…

Apache Flink(四):Flink 其他实时计算框架对比

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 根据前文描述我们知道Flink主要处…

【flink番外篇】1、flink的23种常用算子介绍及详细示例(1)- map、flatmap和filter

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

【优选算法系列】【专题二滑动窗口】第三节.904. 水果成篮和438. 找到字符串中所有字母异位词

文章目录 前言一、水果成篮 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写 1.2.3 题目总结二、找到字符串中所有字母异位词 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写 …