selenium自动化测试框架方式

 更新时间:2020年02月15日 14:56:09   作者:程序员雷子  
这篇文章主要介绍了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),如果测试通过则,浏览器最后会退出,如果出错的话,控制台则会打印出相关信息,

4.4 为一组测试创建TestSuite

  • 1) 应用unittest的TestSuites特性,可以将不同的测试组成一个逻辑组,然后设置统一的测试套件,并通过一个命令来执行;具体通过TestSuites、TestLoader和TestRunner类来实现的;
  • 2)使用TestSuites类来定义和执行测试套件,将多个可测试加到一个测试套件中,还可以用TestLoader和TextTestRunner创建和运行测试套件,举例如下图(TestSuites.py);

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

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

测试报告如下图(TestReport)

总结

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

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python 中Arduino串口传输数据到电脑并保存至excel表格

    python 中Arduino串口传输数据到电脑并保存至excel表格

    这篇文章主要介绍了python Arduino串口传输数据到电脑并保存至excel表格,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Python实现分段线性插值

    Python实现分段线性插值

    这篇文章主要为大家详细介绍了Python实现分段线性插值,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Python使用Tabulate库实现格式化表格数据

    Python使用Tabulate库实现格式化表格数据

    在数据分析和软件开发中,表格数据的展示是一个常见的需求,无论是简单的数据报告,还是复杂的数据可视化,表格都是一种直观且有效的信息展示方式,tabulate库是一个非常实用的工具,它可以帮助我们轻松地将数据格式化为各种表格形式,本文将详细介绍tabulate库的使用方法
    2025-02-02
  • 使用Pyinstaller的最新踩坑实战记录

    使用Pyinstaller的最新踩坑实战记录

    这篇文章主要给大家介绍了最近在使用Pyinstaller的踩坑实战记录,主要介绍了PYTHON2X.DLL缺失和WINDOWS2003 32BIT提示程序无效这两个问题的解决方法,文中给出了详细的解决方法,需要的朋友们下面来一起看看吧。
    2017-11-11
  • 玩转串口通信:利用pyserial库,Python打开无限可能

    玩转串口通信:利用pyserial库,Python打开无限可能

    想要学习如何使用pyserial库实现串口通信吗?这篇指南将带你一步步了解Python中的串口通信,无论是控制硬件设备还是与外部设备进行数据交换,pyserial库都能为你提供便捷的解决方案,快来跟着我们的指南,轻松掌握串口通信的技巧吧!
    2023-11-11
  • Python3实现从指定路径查找文件的方法

    Python3实现从指定路径查找文件的方法

    这篇文章主要介绍了Python3实现从指定路径查找文件的方法,涉及Python目录与文件的相关操作技巧,需要的朋友可以参考下
    2015-05-05
  • python验证公网ip与内网ip的实现示例

    python验证公网ip与内网ip的实现示例

    本文主要介绍了python验证公网ip与内网ip的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Python Process多进程实现过程

    Python Process多进程实现过程

    这篇文章主要介绍了Python Process多进程实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 使用Keras预训练好的模型进行目标类别预测详解

    使用Keras预训练好的模型进行目标类别预测详解

    这篇文章主要介绍了使用Keras预训练好的模型进行目标类别预测详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python urlencode和unquote函数使用实例解析

    Python urlencode和unquote函数使用实例解析

    这篇文章主要介绍了Python urlencode和unquote函数使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论