Python+Selenium自动化测试从零到框架设计系列
Anthony_tester
这个作者很懒,什么都没留下…
展开
-
Python+Selenium中级篇之2-Python中类/函数/模块的简单介绍和方法调用
前篇文章介绍了PyCharm的基本使用,接下来我们的脚本代码都在这个PyCharm这个编辑器里写。好处有很多,项目文件结构层次清晰,写代码的时候会自动化提示和补全。这里,我们在昨天创建的项目下,新建一个包,然后在包下面新建一个demo.py文件。抄写以下代码到你的环境里,尝试运行下,看看有没有问题。关于Python中类和函数及方法的调用,我们写在这个demo.py文件,具体代码如下:# c原创 2017-04-13 12:56:20 · 20901 阅读 · 21 评论 -
Python+Selenium中级篇之3-二次封装Selenium中几个方法
本文来介绍,如何把常用的几个webdriver的方法封装到自己写的一个类中去,这个封装过程叫二次封装Selenium方法。我们把打开站点,浏览器前进和后退,关闭和退出浏览器这这个方法封装到一个新写的类中去。我们按照如下层次结构在PyCharm中新建两个包和两个.py文件: 上图,baidu_search.py是我们编写测试脚本的python文件,具体测试代码写在这个文件。原创 2017-04-13 16:45:03 · 27578 阅读 · 45 评论 -
Python+Selenium中级篇之4-封装一个自己的类-浏览器引擎类
前一篇文章我们知道了,如何去封装几个简单的Selenium方法到我们自定义的类,这次我们编写一个类,叫浏览器引擎类,通过更改一个字符串的值,利用if语句去判断和控制启动那个浏览器。这里我们暂时,支持三大浏览器(IE,Chrome,Firefox)。这里有一个前提条件,在基础篇中,启动三大浏览器的driver文件,检查下你的Python安装路径下有没有这三个driver插件,如果没有,请回到基础篇的原创 2017-04-14 13:34:18 · 21415 阅读 · 20 评论 -
Python+Selenium中级篇之5-Python读取配置文件内容
本文来介绍下Python中如何读取配置文件。任何一个项目,都涉及到了配置文件和管理和读写,Python支持很多配置文件的读写,这里我们就介绍一种配置文件格式的读取数据,叫ini文件。Python中有一个类ConfigParser支持读ini文件。1. 在项目下,新建一个文件夹,叫config,然后在这个文件夹下新建一个file类型的文件:config.ini文件内容如下:# this原创 2017-04-14 17:04:41 · 16240 阅读 · 47 评论 -
Python+Selenium中级篇之6-Python获取系统时间和格式化时间显示
前面一篇文章介绍了,Python如何读取config.ini文件,还有如何获取当前项目根目录相对路径写法。在实际项目的开发,获取项目根路径的相对路径写法是很有必要的,不要去是绝对路径。因为,你自己开发的一个项目,如果拷贝到别的电脑里,发现运行不了,需要更改很多文件的路径,那是不是很失败。本篇文章介绍如何去获取和打印格式化系统时间,我们很多时候,看到一些日志,前面都会记录年月日,时分秒,甚至毫秒,然原创 2017-04-15 13:39:44 · 12588 阅读 · 10 评论 -
Python+Selenium中级篇之7-Python中字符串切割操作
本文来介绍Python中字符串切割操作,在Python中自带的一个切割方法split(),这个方法不带参数,就默认按照空格去切割字段,如果带参数,就按照参数去切割。为了演示切割效果,我们用百度搜索一个关键字,然后去找一共找到了多个结果的数字。 例如,百度搜索“selenium”,查看找到了多少个结果,我们需要单独摘取出这个数字。相关脚本代码如下:# coding=ut原创 2017-04-15 14:13:44 · 11631 阅读 · 30 评论 -
Python+Selenium中级篇之8-Python自定义封装一个简单的Log类
本文介绍如何写一个Python日志类,用来输出不同级别的日志信息到本地文件夹下的日志文件里。为什么需要日志输出呢,我们需要记录我们测试脚本到底做了什么事情,最好的办法是写事件监听。这个事件监听,对我们现在来说,还是有点复杂去理解,所以我这里,选择封装一个简单的日志类,同样达到这个效果。我们大概需要如下日志输出效果:问题分析:我们需要封装一个简单的日志类,主要有以下内容:1. 生原创 2017-04-16 22:05:02 · 19008 阅读 · 44 评论 -
Python+Selenium中级篇之9-把截图类方法封装到前面的BasePage.py
本文介绍把截图类方法封装到BasePage.py文件里,这个文件是在前面Selenium方法二次封装文章里创建的,具体代码请到前面这篇里找。我们截图类写死了把截图图片保存到根目录下的Screenshots文件夹里,图片名称是当前系统时间,图片后缀名是png。新的BasePage.py内容如下:# coding=utf-8import osimport timefrom test.l原创 2017-04-16 22:51:28 · 12054 阅读 · 12 评论 -
Python+Selenium中级篇之10-Python中的继承的使用
本文开始介绍一个面向对象设计领域里,很常见的一种思想,继承。继承有很多好处,常听到的一句话就是,子类能够直接使用父类的方法,这样就可以减少子类代码量。其实,在自动化测试框架设计过程中,是很有必要把继承加入到你的测试脚本中去。接下来我们,简单写一个Python文件,来演示下继承的基本使用。1. 在test1包名下新建一个classA.py,这个就是我们的父类,里面有一个打开chrome浏览器和打原创 2017-04-17 12:46:54 · 11916 阅读 · 0 评论 -
Python+Selenium框架设计篇之1-什么是自动化测试框架
1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境。自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本,多种方式、平台执行脚本,良好的报告去跟踪脚本执行结果。框架具有以下一些优点:1)代码复用2)最大覆盖率3)很低成本维护4)很少人工干预5)简单报告输出2.常见的测试框架分类好原创 2017-04-18 09:51:34 · 32059 阅读 · 6 评论 -
Python+Selenium框架设计篇之2-简单介绍unittest单元测试框架
前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等。在继续介绍框架设计之前,我们先来学习一个工具,叫unittest。 unittest是一个单元测试框架,是Python编程的单元测试框架。有时候,也做叫做“PyUnit”,是Junit的Python语言版本。这里了解下,Junit是Java语言的单元测试框架,Java还有原创 2017-04-19 11:24:49 · 23660 阅读 · 25 评论 -
Python+Selenium框架设计篇之3-什么是POM
前面我们介绍了Python中的单元测试框架unittest,以后我们所有的测试类文件,都采用unittest来辅助我们进行debug和脚本开发。搞定了debug机制和确定了unittest来进行创建和管理我们的自动化测试脚本,接下来我们来考虑下,框架设计中一种很普遍的设计思想-POM(Page Object Model) POM,中文字母意思是,页面对象模型,POM是一种最近几年非原创 2017-04-19 12:23:06 · 19995 阅读 · 7 评论 -
Python+Selenium框架设计篇之4-框架内封装日志类和浏览器引擎类
本文开始一步一步介绍,如何创建自己的第一个自动化测试框架。这一篇,我们介绍,如何封装自己的日志类和浏览器引擎类。相关步骤:1. 打开PyCharm,创建如下格式的项目层级结构,文件名称和我保持一样;2. 相关文件代码如下配置文件config.ini相关设计如下: # this is config file, only store browser type and s...原创 2017-04-19 17:51:55 · 24480 阅读 · 103 评论 -
Python+Selenium框架设计篇之5-框架内封装基类和实现POM
前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM。关于基类,是这样定义的:把一些常见的页面操作的selenium封装到base_page.py这个类文件,以后每个POM中的页面类,都继承这个基类,这样每个页面类都有基类的方法,这个我们会在这篇文章实现。1. 在实现封装基类里,我们实现了元素八大方式的定位和截图类封装。具体项目层级原创 2017-04-20 16:41:17 · 26493 阅读 · 57 评论 -
Python+Selenium框架设计篇之6-一个类文件多个测试方法情况下测试固件的写法
其实,到前面这一篇文章,简单的Python+Selenium自动化测试框架就已经算实现了。接下来的主要是介绍,unittest管理脚本,如何如何加载执行脚本,再就是采用第三方插件,实现输出html的测试报告。本文来介绍下,在同一个类中,多个测试函数时候,测试固件如何写为了说明这个问题,我们在之前的测试类基础上,再写一个test_search2()的测试用例,看看会发生什么。# codi原创 2017-04-20 21:56:09 · 14781 阅读 · 25 评论 -
Python+Selenium框架设计篇之7-进一步实现POM和可能遇到问题解决办法
本文进一步演示POM的具体实现,前面POM只是一个页面,一个测试脚本,现在我们要实现三个页面,两个测试脚本。在pageobjects包下,我新建了2个页面对象:百度新闻首页,百度体育新闻首页,具体文件结构如下图,其他和之前项目层级结构保持不变。百度首页页面类代码(baidu_homepage.py),定义了百度新闻的入口# coding=utf-8from framework.b原创 2017-04-22 10:59:04 · 14920 阅读 · 32 评论 -
Python+Selenium框架设计篇之8-unittest执行脚本方法之addTest
本文开始介绍如何通过unittest来管理和执行测试用例,这一篇介绍unittest下addTest()方法来加载测试用例到测试套件中去。为了演示效果,我在前面文章的脚本基础上,新建了一个测试脚本,这个测试脚本有一个测试用例,加上前面的测试脚本,一共就是三个测试用例,前面那个测试类里面包括两个测试用例。新建的测试脚本,test_get_page_title.py代码如下:# cod原创 2017-04-22 16:36:04 · 17595 阅读 · 17 评论 -
Python+Selenium框架设计篇之9-unittest执行脚本方法之makeSuite()
前面文章介绍了如何用addTest()方法来加载我们测试用例到suite中去,本文介绍利用makeSuite()方法,一次性加载一个类文件下所有测试用例到suite中去。还是利用前面一篇文章中的测试脚本,来看看TestRunner.py如何写。# coding = utf-8import unittestimport testsuitesfrom testsuites.test_baid原创 2017-04-22 17:07:30 · 15980 阅读 · 10 评论 -
Python+Selenium框架设计篇之10-unittest执行脚本方法之discover()方法
继续接着介绍,如何利用unittest管理和执行测试用例的问题,这里我们还是利用之前已经有的三条测试用例,如果你跳过了前面文章,请回到框架设计篇的第八篇和第七篇,里面有相关测试类的文件。本文来介绍,如果利用discover()方法去加载一个路径下所有的测试用例。这个方法是不是太适合我们现在的需求,例如我只需要跑testsuite包下所有测试用例,不管在里面有多少个包和多少个测试类,只需要用disc原创 2017-04-22 17:45:34 · 14164 阅读 · 29 评论 -
Python+Selenium框架设计篇之11-自动化测试报告的生成
本文来介绍如何生成自动化测试报告,前面文章尾部提到了利用HTMLTestRunner.py来生成自动化测试报告。关于HTMLTestRunner不过多介绍,只需要知道是一个能生成一个HTML格式的网页报告就可以,其他的可以自己去搜索查询资料。我们需要在我们自动化框架里面继承一个报告输出,直接来看看效果。这里我们报告输出代码写到了,负责执行测试套件TestRunner.py这个文件。相关原创 2017-04-24 10:15:56 · 20732 阅读 · 48 评论 -
Python+Selenium从零开始到框架设计的结束总结篇
写到这里,本系列打算正式结束,不想再写。一开始也没想到会写这么多篇,差不多60篇文章,我想也算是一个很好的学习Selenium+Python的教程。这里来总结下这些文章:1. 基础篇,主要是能个熟悉如何打开和关闭浏览器,主要是三大浏览器IE/火狐/谷歌。以后在测试过程中,要经常去selenium官网下载selenium for python的最新版本和升级三大浏览器的driver文件。原创 2017-04-24 14:07:14 · 35655 阅读 · 50 评论