资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Selenium+Webdriver+Python,自动化测试环境,一,.Selenium+Webdriver+Python,基本框架的介绍,二,.,自动化测试环境的搭建,三,.selenium-ide,脚本录制和脚本写作,四,.unittest,的简单介绍及使用,五,.,网页元素的定位,六,.,浏览器的基本操作,七,.,拓展,:,(,1,)测试报告的生成,(,2,)数据驱动(文本、表格等),一,.Selenium+Webdriver+Python,基本框架介绍,Selenium,是一个开源的和便携式的自动化软件测试工具,用于测试,Web,应用程序有能力在不同的浏览器和操作系统运行,相比,QTP,有以下优点:,*,开源免费,不用为破解而大伤脑筋,*,小巧,对于不同的语言它只是一个包而已,,而,QTP,需要下载安装,1,个多,G,的程序。,*,支持多种脚本语言,这是最重要的一点,不管你以前,更熟悉,C,、,java,、,ruby,、,python,、或是,C#,,你都,可以通过,selenium,完成自动化测试,而,QTP,只支持,VBS,*,支持多平台:,Windows,、,Linux,、,MAC,*,支持多浏览器:,IE,、,Firefox,、,Chrome,、,Safari,、,Opera,等,一,.Selenium+Webdriver+Python,基本框架介绍,一,.Selenium+Webdriver+Python,基本框架介绍,Selenium,:,1,、,Selenium,脚本录制和回放,2,、,Selenium,自动化脚本(,.py,)编写,3,、,Selenium,测试套(,Testsuite,),初始化,预置条件,用例执行部分,清理,还原初始环境,4,、截图以及结果报告的生成,一,.Selenium+Webdriver+Python,框架的介绍,软件列表,Python,(,2.7.,x,)(脚本语言,驱动,Selenium,),SetupTools,、,pip,工具(安装包管理工具),Python,的,Selenium,包(实现网页自动化测试),浏览器(,firfox,,,ie,、,chrome,等),网页驱动,IE,:,IEDriverChrome,:,Chromedriver,Selenium IDE,插件,firebug,插件(获取网页元素的,Xpath,、,Css,等),其他:,HTMLTesterRunner.py(,生成测试报告,),、,xlrd(,对,xls,表格进行读操作)等,脚本开发,脚本执行,辅助,脚本录制,第一步:下载并安装,Python(,推荐使用,2.7.,x,版本),exe,文件运行安装即可,安装后环境变量中添加,python,的安装目录。,第二步:下载并安装,Python,的,SetupTools:,SetupTools,就是一个帮助你安装第三方工具包的增强,工具软件。,下载文件后,对,setuptools-x.x.tar.gz,文件进行解压,,进入,windows,命令提示下执行,setup.py,,,X:setuptools-x.x python setup.py install,没有报错表示安装成功。,第三步:下载并安装,Python,的包管理工具,pip,,,pip,有点类似,SetupTools,但是比它强大。,下载文件后,,pip-x.x.tar.gz,文件进行解压,进入,windows,命令,提示下执行,setup.py,,如:,X:pip x.x python,setup.py,install,没有报错表示安装成功。,切换到,X:Python27Scripts,目录下输入:,X:Python27Scripts,easy_install,pip,没有报错表示安装成功。,二,.,自动化测试环境的搭建,第四步:下载并安装基于,Python,的,Selenium,包,下载,selenium,x.xx.x,并解压把整个目录放到,X:Python27Libsite-packages,目录下,进入,windows,命令提示下执行,setup.py,,如:,X:Python27Libsite-packagesselenium-x.xx.x,python setup.py install,没有报错表示安装成功。,第五步:验证,Selenium,安装是否成功,.,其他:,Firefox,浏览器,网页驱动(,IE:IEDriver,Chrome:Chromedriver),selenium-ide,插件(脚本录制),,HTMLTesterRunner.py,(,生成测试报告,),,,xlrd(,对,xls,表格进行读操作)等,HTMLTesterRunner.py(,生成测试报告,),,,xlrd(,对,xls,表格进行读操作,)将其放到,Python,的,LIB,库中,,Import,HTMLTesterRunner,、,Import,xlrd,就可实现相应的功能。,二,.,自动化测试环境的搭建,二,.,自动化测试环境的搭建,#,验证,Selenium,安装是否成功,#,功能:打开巨潮网主页,在搜索栏输入,000001,进行搜索,#coding=utf-8,from selenium import webdriver,#Keys,提供键盘操作,from mon.keys import Keys,import time,#,打开,Firefox,浏览器,driver=webdriver.Firefox(),#,打开巨潮网主页,driver.get(http:/ IDE,录制的结果,第六步:脚本导出(选择导出需要的语言脚本:,Python2/Unittest/webdiver,),三,.selenium-ide,脚本录制和脚本写作,三,.selenium-ide,脚本录制和脚本写作,三,.selenium-ide,脚本录制和脚本写作,三,.selenium-ide,脚本录制和脚本写作,IDE,录制脚本存在局限和问题:,1,、脚本不稳定,回放经常出错。(,部分操作捕获不到,),2,、阅读性差,不知道自动化测试执行了具体哪些操作,和实现什么功能。(,注释,),3,、如果,web,页面中的个别元素发生了变化,,所有涉及该元素的脚本需要修改。,4,、元素的,id,或部分文字是动态的,,即每次执行的脚本都是不同的。(,参数化,),5.,缺少对实际结果进行判断的语句。(,断言,),等等,打开,IDLE(python GUI)OPEN:,加载录制导出的脚本,进行脚本编写。,三,.selenium-ide,脚本录制和脚本写作,四,.unittest,的简单介绍及使用,TestCase:,一个测试用例,或是一个完整的测试流程,包括测试前准备环境的搭建,(setUp),,执行测试代码,(run),以及测试后环境的还原,(tearDown),。,元测试,(unittest),的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。,TestSuite:,而多个测试用例,TestCase,集合在一起,就是,TestSuite,,而且,TestSuite,也可以嵌套,TestSuite,。,TestLoader:,用来加载,TestCase,到,TestSuite,中的,其中有几个,loadTestsFrom_(),方法,就是从各个地方寻找,TestCase,,创建它们的实例,然后,add,到,TestSuite,中,再返回一个,TestSuite,实例。,TextTestRunner:,是来执行测试用例的,其中的,run(test),会执行,TestSuite/TestCase,中的,run(result),方法。,测试的结果会保存到,TextTestResult,实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。,整个流程,:,首先是要写好,TestCase,,然后由,TestLoader,加载,TestCase,到,TestSuite,,然后由,TextTestRunner,来运行,TestSuite,,,运行的结果保存在,TextTestResult,中,整个过程集成在,unittest.main,模块中。,四,.unittest,的简单介绍及使用,Test Fixture:,对一个测试用例环境的搭建和销毁,通过覆盖,TestCase,的,setUp(),和,tearDown(),方法来实现。,这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在,setUp(),中建立数据库连接以及进行一些初始化,在,tearDown(),中清除在数据库中产生的数据,然后关闭连接。注意,tearDown,的过程很重要,要为以后的,TestCase,留下一个干净的环境。,一个完整的测试脚本包含:,1.import unittest,2.,定义一个继承自,unittest.TestCase,的测试用例类,3.,定义,setUp,和,tearDown,,在每个测试用例前后做一些辅助工作。,4.,定义测试用例,名字以,test,开头。,5.,一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用,assertEqual,、,assertRaises,等断言方法判断程序执行结果和预期值是否相符。,6.,调用,unittest.main(),启动测试,7.,如果测试未通过,会输出相应的错误提示。,如果测试全部通过则不显示任何东西,也可,以添加,-v,参数显示详细信息。,四,.unittest,的简单介绍及使用,四,.unittest,的简单介绍及使用,介绍以下,unittest,的基本用法。,第,1,种用法(以下代码是官方文档的,sample,)。,import unittest,class TestSequenceFunctions(unittest.TestCase):,def setUp(self):,self.seq=range(10),def test_choice(self):,element=random.choice(self.seq),self.assertTrue(element in self.seq),def test_sample(self):,with self.assertRaises(ValueError):,random.sample(self.seq,20),for element in random.sample(self.seq,5):,self.assertTrue(element in self.seq),def setDown(self):,pass,if _name_=_main_:,unittest.main(),1.,从,unittest.TestCase,继承一个子类。,2.,定义测试方法,以,test,开头。,3.,调用,unittest.main(),,这个方法会自动执行所有以,test,开头的测试方法。,四,.unittest,的简单介绍及使用,第,2,种调用方法:自己创建一个,TestSuite,,添加需要执行测试的,TestCase,,然后使用,TestRunner().run(suite),执行测试。,if _name_=_main_:,suite=unittest.TestSuite(),suite.addTest(TestSequenceFunctions(test_choice),suite.addTest(TestSequenceFunctions(test_sample),unittest.TextTestRunner().run(suite),四,.unittest,的简单介绍及使用,测试主要是调用,assertEqual,、,assertRaises,等断言方法
展开阅读全文