版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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:IEDriver
Chrome:ChromedriverSeleniumIDE插件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>pythonsetup.pyinstall
没有报错表示安装成功。第三步:下载并安装Python的包管理工具pip,pip—有点类似SetupTools
,但是比它强大。下载文件后,pip-x.x.tar.gz文件进行解压,进入windows命令提示下执行setup.py,如:X:\pipx.x>python
setup.py
install
没有报错表示安装成功。切换到X:\Python27\Scripts
目录下输入:X:\Python27\Scripts
>
easy_install
pip没有报错表示安装成功。二.自动化测试环境的搭建第四步:下载并安装基于Python的Selenium包下载selenium
x.xx.x
,并解压把整个目录放到X:\Python27\Lib\site-packages目录下,进入windows命令提示下执行setup.py,如:X:\Python27\Lib\site-packages\selenium-x.xx.x>pythonsetup.pyinstall没有报错表示安装成功。第五步:验证Selenium安装是否成功.....其他:
Firefox浏览器,网页驱动(IE:IEDriver
Chrome:Chromedriver),selenium-ide插件(脚本录制),HTMLTesterRunner.py(生成测试报告),xlrd(对xls表格进行读操作)等HTMLTesterRunner.py(生成测试报告),xlrd(对xls表格进行读操作)将其放到Python的LIB库中,ImportHTMLTesterRunner、Importxlrd就可实现相应的功能。二.自动化测试环境的搭建二.自动化测试环境的搭建Selenium的IDE(集成开发环境)是一个易于使用的Firefox插件,用于开发Selenium测试案例。它提供了一个图形用户界面,用于记录使用Firefox浏览器,用来学习和使用Selenium用户操作,但它只能用于Firefox浏览器不支持其它浏览器。然而,所记录的脚本可以被转换成由Selenium支持多种编程语言和脚本可以在各种其它的浏览器,以及被执行。
脚本录制步骤:
第一步:打开火狐浏览器,在地址栏上输入被测网页的URL.第二步:菜单栏:工具-selenium-ide打开后,在的selenium-ide地址栏输入相同的URL.第三步:点击开始录制第四步:在浏览器中进行相应的操作第五步:点击结束录制,查看并回放SeleniumIDE录制的结果第六步:脚本导出(选择导出需要的语言脚本:Python2/Unittest/webdiver
)三.selenium-ide脚本录制和脚本写作三.selenium-ide脚本本录录制制和和脚脚本本写写作作三.selenium-ide脚本本录录制制和和脚脚本本写写作作三.selenium-ide脚本本录录制制和和脚脚本本写写作作IDE录制制脚脚本本存存在在局局限限和和问问题题::1、脚脚本本不不稳稳定定,,回回放放经经常常出出错错。。((部分分操操作作捕捕获获不不到到)2、阅阅读读性性差差,,不不知知道道自自动动化化测测试试执执行行了了具具体体哪哪些些操操作作,,和和实实现现什什么么功功能能。。((注释释)3、如如果果web页面面中中的的个个别别元元素素发发生生了了变变化化,所所有有涉涉及及该该元元素素的的脚脚本本需需要要修修改改。。4、元元素素的的id或部部分分文文字字是是动动态态的的,,即每每次次执执行行的的脚脚本本都都是是不不同同的的。。((参数数化化)5.缺少少对对实实际际结结果果进进行行判判断断的的语语句句。。((断言言)………等等等打开开IDLE(pythonGUI)>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的简单介介绍及使使用TestFixture:对一个测测试用例例环境的的搭建和和销毁,,通过覆覆盖TestCase的setUp()和tearDown()方法来实实现。这个有什什么用呢呢?比如如说在这这个测试试用例中中需要访访问数据据库,那那么可以以在setUp()中建立数数据库连连接以及及进行一一些初始始化,在在tearDown()中清除在在数据库库中产生生的数据据,然后后关闭连连接。注注意tearDown的过程很很重要,,要为以以后的TestCase留下一个个干净的的环境。。一个完整整的测试试脚本包包含:1.importunittest2.定义一个个继承自自unittest.TestCase的测试用用例类3.定义setUp和tearDown,在每个个测试用用例前后后做一些些辅助工工作。4.定义测试试用例,,名字以以test开头。5.一个测试试用例应应该只测测试一个个方面,,测试目目的和测测试内容容应很明明确。主主要是调调用assertEqual、assertRaises等断言方方法判断断程序执执行结果果和预期期值是否否相符。。6.调用unittest.main()启动测试试7.如果测试试未通过过,会输输出相应应的错误误提示。。如果测试试全部通通过则不不显示任任何东西西,也可可以添加-v参数显示示详细信信息。四.unittest的简单介介绍及使使用四.unittest的简单介介绍及使使用介绍以下下unittest的基本用用法。第1种用法((以下代代码是官官方文档档的sample)。importunittestclassTestSequenceFunctions(unittest.TestCase):defsetUp(self):self.seq=range(10)deftest_choice(self):element=random.choice(self.seq)self.assertTrue(elementinself.seq)deftest_sample(self):withself.assertRaises(ValueError):random.sample(self.seq,20)forelementinrandom.sample(self.seq,5):self.assertTrue(elementinself.seq)defsetDown(self):passif__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等断言言方法法判断断程序序执行行结果果和预预期值值是否否相符符。常见的的断言言方法法有::selenium对web各元素素的操操作首首先就就要先先定位位元素素,定定位元元素的的方法法主要要有以以下几几种::1、通过过id定位元元素::find_element_by_id("id_vaule")2、通过过name定位元元素::find_element_by_name("name_vaule")3、通过过tag_name定位元元素::find_element_by_tag_name("tag_name_vaule")4、通过过class_name定位元元素::find_element_by_class_name("class_name")5、通过过css定位元元素::find_element_by_css_selector();6、通过过xpath定位元元素::find_element_by_xpath("xpath")7、通过过link定位::find_element_by_link_text("text_vaule")或者find_element_by_partial_link_text()五.网页元元素的的定位位五.网页元元素的的定位位下面是是百度度输入入框的的html代码,,可以以通过过firebug或者谷谷歌的的审查查元素素得::<inputtype=“text“name=”wd”id=“kw1”maxlength=““100““style=””width:474px;”autocomplete=““off””>1.通过id定位::则百度度的输输入框框即可可表示示为::find_element_by_id(“kw1”)2.通过name定位::则可以以表示示为::find_element_by_name(“wd””)3.通过tag_name定位::input其实就就是tag_name(标签签名)),同样也也可以以表示示成::find_element_by_tag_name("input")注意::通过过tag_name查找时时使用用find_element_by_tag_name查找到到的是是第一一个标标签的的tag_name<divclass=”top”><span>Head</span></div><divclass=”top”><span>HeadName</span></div>4.通过class_name定位元元素::top=find_element_by_className(“top”);五.网页元元素的的定位位5、通过过css定位元元素:用css定位是是比较较灵活活的,,想要要完全全弄懂懂,花花费的的时间间是比比较多多的,,个人人觉得得没有有必要要,尽量不不使用用6、通过过xpath定位元元素::XPath是一种种在XML文档中中定位位元素素的语语言。。因为为HTML可以看看做XML的一种种实现现,所所以selenium用户可可是使使用这这种强强大语语言在在web应用中中定位位元素素。XPATH的值可可以通通过firebug或者谷谷歌的的审查查元素素中::右键功功能::复制制XPATH即可获获得。。例子::driver.find_element_by_xpath("//tr[7]/td[2]")六.浏览器器的基基本操操作常用操操作::六.浏览器器的基基本操操作ActionChains类鼠标标操作作的常常用方方法::引入ActionChains类:mon.action_chainsimportActionChainscontext_click()右击——如:RightClick=driver.find_element_by_id("id")ActionChains(driver).context_click(RightClick).perform()double_click()双击——如:DoubleClick=driver.find_element_by_name("name")ActionChains(driver).double_click(DoubleClick).perform()drag_and_drop(source,target)鼠标拖拖放——source::鼠标按按下的的源元元素;;target::鼠标释释放的的目标标元素素——如:element=driver.find_element_by_name("name")target=driver.find_element_by_name("name")ActionChains(driver).drag_and_drop(element,target).perform()move_to_element()鼠标悬停在在一个元素素上——如:above=driver.find_element_by_xpath("xpath路径")ActionChains(driver).move_to_element(above).perform()click_and_hold()按下鼠标左左键在一个个元素上——如:left=driver.find_element_by_name("name")ActionChains(driver).click_and_hold(left).perform()六.浏览器的基基本操作键盘事件::引入Keys类包:mon.keysimportKeyssend_keys()输入框输入入内容——如:driver.find_element_by_id("id").send_keys("XXX")send_keys(Keys.SPACE)输入空格——如:driver.find_element_by_id("id").send_keys(Keys.SPACE)send_keys(Keys.CONTROL,‘a‘)ctrl+a全选输入框框的内容——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘a‘)send_keys(Keys.CONTROL,‘x‘)ctrl+x剪切输入框框的内容——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘x‘)send_keys(Keys.CONTROL,‘c‘)复制——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘c‘)send_keys(Keys.CONTROL,‘v‘)ctrl+v粘贴到输入入框——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘v‘)send_keys(Keys.ENTER)回车代替点点击——如:driver.find_element_by_id("id").send_keys(Keys.ENTER)send_keys(Keys.TAB)制表键(Tab)——如:driver.find_element_by_id("id").send_keys(Keys.TAB)send_keys(Keys.ESCAPE)回退键(Esc)——如:driver.find_element_by_id("id").send_keys(Keys.ESCAPE)七.拓展-测试报告的的生成#导入测试报报告生成的的模块importHTMLTestRunnersuite=unittest.TestSuite()#定义生成测测试报告的的名称filename1=r".result\"+str(time.strftime('%Y%m%d%H%M%S'))+".html"
fp=file(filename1,'wb')#定义测试报报告的路径径,标题,,描述等内内容runner=HTMLTestRunner.HTMLTes
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45057-2024再生钛锭
- 2024年金融机构与中小企业公对公信用贷款合同3篇
- 美食广场食品安全检测制度
- 交通运输设备采购招投标流程
- 网络安全防护指南
- 填筑土方施工合同
- 仓储物流中心续租合同
- 2024年水电设备安全认证与检测服务合同3篇
- 金融行业总监理合同模板
- 房屋共同使用权保险合同
- 工作场所空气中有害物质监测的采样规范课件159-2004
- 医院医用气体管路的设计计算(2014)
- 土地储备专项债券发行操作流程
- 沙锅餐饮行业管理公司采购管理手册
- 合同范本之采购合同谁保管
- 农村小学生上下学交通安全教育的研究
- 雍琦版法律逻辑学课后习题答案全
- 学校暑期维修方案
- 国家自然科学基金进展报告
- 小车多方式运行的PLC控制——PLC控制系统课程设计
- (完整版)机加中心绩效考核方案
评论
0/150
提交评论