写点什么

百里带你一文读懂 selenium 自动化测试(基于 Python)

作者:伤心的辣条
  • 2022 年 6 月 14 日
  • 本文字数:3111 字

    阅读完需:约 10 分钟

百里带你一文读懂selenium自动化测试(基于Python)

前言

我们今天来聊聊 selenium 自动化测试,我们都知道 selenium 是一款 web 自动化测试的工具,它应该如何去运用呢?我们接着看下去。


1、Selenium 简介:

1.1 Selenium:

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 seleniumMac: 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 组件,使用元素定位方式,完成测试用例,输出测试报告的简单步骤,具体实际操作中可能会遇到其它问题,具体问题具体解决。

喜欢的可以收藏点赞,加关注哟,关注小编,每天给你不同的惊喜哟,作为回报小编在这里给大家免费送有关 web 自动化的学习资料哟。私信“资料”可以免费获得哟。




最后: 可以在公众号:伤心的辣条 ! 自行领取一份 216 页软件测试工程师面试宝典文档资料【免费的】。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux 必备、Shell、互联网程序原理、Mysql 数据库、抓包工具专题、接口测试工具、测试进阶-Python 编程、Web 自动化测试、APP 自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。


学习技术千万不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:746506216(里面有各种软件测试资源和技术讨论)


喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

发布于: 刚刚阅读数: 3
用户头像

一个乐于分享技术的测试人... 2022.03.18 加入

公众号:【伤心的辣条】主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。

评论

发布
暂无评论
百里带你一文读懂selenium自动化测试(基于Python)_Python_伤心的辣条_InfoQ写作社区