SeleniumWebdriverPython自动化测试环境.ppt

上传人:牧羊曲112 文档编号:6518819 上传时间:2023-11-08 格式:PPT 页数:35 大小:2.11MB
返回 下载 相关 举报
SeleniumWebdriverPython自动化测试环境.ppt_第1页
第1页 / 共35页
SeleniumWebdriverPython自动化测试环境.ppt_第2页
第2页 / 共35页
SeleniumWebdriverPython自动化测试环境.ppt_第3页
第3页 / 共35页
SeleniumWebdriverPython自动化测试环境.ppt_第4页
第4页 / 共35页
SeleniumWebdriverPython自动化测试环境.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《SeleniumWebdriverPython自动化测试环境.ppt》由会员分享,可在线阅读,更多相关《SeleniumWebdriverPython自动化测试环境.ppt(35页珍藏版)》请在三一办公上搜索。

1、Selenium+Webdriver+Python自动化测试环境,一.Selenium+Webdriver+Python基本框架的介绍二.自动化测试环境的搭建三.selenium-ide脚本录制和脚本写作四.unittest的简单介绍及使用五.网页元素的定位六.浏览器的基本操作七.拓展:(1)测试报告的生成(2)数据驱动(文本、表格等),一.Selenium+Webdriver+Python基本框架介绍,Selenium是一个开源的和便携式的自动化软件测试工具,用于测试Web应用程序有能力在不同的浏览器和操作系统运行,相比QTP有以下优点:*开源免费,不用为破解而大伤脑筋*小巧,对于不同的语言

2、它只是一个包而已,而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

3、测试套(Testsuite)初始化,预置条件用例执行部分清理,还原初始环境4、截图以及结果报告的生成,一.Selenium+Webdriver+Python框架的介绍,脚本开发,脚本执行,辅助,脚本录制,第一步:下载并安装Python(推荐使用2.7.x版本)exe文件运行安装即可,安装后环境变量中添加python的安装目录。第二步:下载并安装Python的SetupTools:SetupTools就是一个帮助你安装第三方工具包的增强工具软件。下载文件后,对setuptools-x.x.tar.gz文件进行解压,进入windows命令提示下执行setup.py,X:setuptools-x.x

4、 python setup.py install没有报错表示安装成功。第三步:下载并安装Python的包管理工具 pip,pip有点类似SetupTools,但是比它强大。下载文件后,pip-x.x.tar.gz文件进行解压,进入windows命令提示下执行setup.py,如:X:pip x.x pythonsetup.pyinstall没有报错表示安装成功。切换到X:Python27Scripts目录下输入:X:Python27Scriptseasy_installpip 没有报错表示安装成功。,二.自动化测试环境的搭建,第四步:下载并安装基于Python的Selenium包下载selen

5、iumx.xx.x,并解压把整个目录放到X:Python27Libsite-packages目录下,进入windows命令提示下执行setup.py,如:X:Python27Libsite-packagesselenium-x.xx.xpython setup.py install没有报错表示安装成功。第五步:验证Selenium安装是否成功.其他:Firefox浏览器,网页驱动(IE:IEDriver Chrome:Chromedriver),selenium-ide插件(脚本录制),HTMLTesterRunner.py(生成测试报告),xlrd(对xls表格进行读操作)等HTMLTest

6、erRunner.py(生成测试报告),xlrd(对xls表格进行读操作)将其放到Python的LIB库中,Import HTMLTesterRunner、Import xlrd就可实现相应的功能。,二.自动化测试环境的搭建,二.自动化测试环境的搭建,#验证Selenium安装是否成功#功能:打开巨潮网主页,在搜索栏输入000001进行搜索#coding=utf-8from selenium import webdriver#Keys提供键盘操作from mon.keys import Keysimport time#打开Firefox浏览器driver=webdriver.Firefox()

7、#打开巨潮网主页driver.get(http:/,Selenium的IDE(集成开发环境)是一个易于使用的Firefox插件,用于开发Selenium测试案例。它提供了一个图形用户界面,用于记录使用Firefox浏览器,用来学习和使用Selenium用户操作,但它只能用于Firefox浏览器不支持其它浏览器。然而,所记录的脚本可以被转换成由Selenium 支持多种编程语言和脚本可以在各种其它的浏览器,以及被执行。脚本录制步骤:第一步:打开火狐浏览器,在地址栏上输入被测网页的URL.第二步:菜单栏:工具-selenium-ide打开后,在的selenium-ide地址栏输入相同的URL.第三

8、步:点击开始录制第四步:在浏览器中进行相应的操作第五步:点击结束录制,查看并回放Selenium IDE录制的结果第六步:脚本导出(选择导出需要的语言脚本:Python2/Unittest/webdiver),三.selenium-ide脚本录制和脚本写作,三.selenium-ide脚本录制和脚本写作,三.selenium-ide脚本录制和脚本写作,三.selenium-ide脚本录制和脚本写作,IDE录制脚本存在局限和问题:1、脚本不稳定,回放经常出错。(部分操作捕获不到)2、阅读性差,不知道自动化测试执行了具体哪些操作,和实现什么功能。(注释)3、如果web页面中的个别元素发生了变化,所

9、有涉及该元素的脚本需要修改。4、元素的id或部分文字是动态的,即每次执行的脚本都是不同的。(参数化)5.缺少对实际结果进行判断的语句。(断言)等等,打开IDLE(python GUI)OPEN:加载录制导出的脚本,进行脚本编写。,三.selenium-ide脚本录制和脚本写作,四.unittest的简单介绍及使用,TestCase:一个测试用例,或是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run)以及测试后环境的还原(tearDown)。元测试(unittest)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证

10、。TestSuite:而多个测试用例TestCase集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。,TestLoader:用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom_()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。TextTestRunner:是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。测试的结果会保存到TextTestResult实例中,包括运行了多少测

11、试用例,成功了多少,失败了多少等信息。,整个流程:首先是要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,整个过程集成在unittest.main模块中。,四.unittest的简单介绍及使用,Test Fixture:对一个测试用例环境的搭建和销毁,通过覆盖TestCase的setUp()和tearDown()方法来实现。这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp()中建立数据库连接以及进行一些初始化,在tear

12、Down()中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的TestCase留下一个干净的环境。,一个完整的测试脚本包含:1.import unittest2.定义一个继承自unittest.TestCase的测试用例类3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。4.定义测试用例,名字以test开头。5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。6.调用unittest.main()启动测试 7.如果测试未通过

13、,会输出相应的错误提示。如果测试全部通过则不显示任何东西,也可 以添加-v参数显示详细信息。,四.unittest的简单介绍及使用,四.unittest的简单介绍及使用,介绍以下unittest的基本用法。第1种用法(以下代码是官方文档的sample)。import unittestclass TestSequenceFunctions(unittest.TestCase):def setUp(self):self.seq=range(10)def test_choice(self):element=random.choice(self.seq)self.assertTrue(element

14、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):passif _name_=_main_:unittest.main()1.从unittest.TestCase继承一个子类。2.定义测试方法,以test开头。3.调用unittest.main(),这个方法会自动执行所

15、有以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的简单介绍及

16、使用,测试主要是调用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(clas

17、s_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或者谷歌的审查元素得:1.通过id定位:则百度的输入框即可表示为:find_element_by_id(“kw1”)2.通过name定位:则可以表示为

18、: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_nameHead HeadName 4.通过class_name定位元素:top=find_element_by_className(“top”);,五.网页元素的定位,有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link定位baidu 7.通过link

19、定位:baidu=driver.find_element_by_link_text(“baidu”);,5、通过css定位元素:用css定位是比较灵活的,想要完全弄懂,花费的时间是比较多的,个人觉得没有必要,尽量不使用6、通过xpath定位元素:XPath是一种在XML文档中定位元素的语言。因为HTML可以看做XML的一种实现,所以selenium用户可是使用这种强大语言在web应用中定位元素。XPATH的值可以通过firebug或者谷歌的审查元素中:右键功能:复制XPATH即可获得。例子:driver.find_element_by_xpath(/tr7/td2),六.浏览器的基本操作,选择

20、浏览器:driver=webdriver.Firefox()打开url:driver.get(http:/)前进/后退:driver.forward()/driver.back()刷新:driver.refresh()最大化:browser.maximize_window()返回当前页面标题:driver.title返回当前页面url:driver.current_url返回当前浏览器的所有窗口:driver.window_handles返回当前浏览器的窗口句柄:driver.current_window_handle选择窗口:driver.switch_to_window(“window_n

21、ame”)对话框操作:driver.switch_to_alert()#选择窗口对象截取当前页面:driver.get_screenshot_as_file(/Screenshots/foo.png)关闭浏览器:driver.quit()/driver.close(),常用操作:,六.浏览器的基本操作,ActionChains类鼠标操作的常用方法:引入ActionChains类:from mon.action_chains import ActionChainscontext_click()右击如:RightClick=driver.find_element_by_id(id)ActionCh

22、ains(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

23、_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_ho

24、ld(left).perform(),六.浏览器的基本操作,键盘事件:引入Keys类包:from mon.keys import Keyssend_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.CO

25、NTROL,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.E

26、NTER)回车代替点击如: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),七.拓展-测试报告的生成,#导入测试报告生成的模块import HTMLTestRunnersuite=unittest.TestSuite()#

27、定义生成测试报告的名称filename1=r.result+str(time.strftime(%Y%m%d%H%M%S)+.htmlfp=file(filename1,wb)#定义测试报告的路径,标题,描述等内容runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u自动化测试报告,description=u自动化测试报告)#执行测试脚本,并生成测试报告runner.run(suite)报告的内容:,七.拓展-数据驱动(文本、表格等),文本:例子:作用是获取data_file文本中内容,存放在列表中,作为输入。data_file的内容:姓名

28、 性别 年龄张三 男 20 李四 男 24 def datatouch(i):source=open(./data_file.txt,r)values=source.readlines()word=valuesi.split()return word Data_1=datatouch(1)Test_value1=str(Data_10),数据驱动:从某个数据文件(例如文本、Excel 文件、CSV 文件、数据库等)中读取输入、输出的测试数据,然后通过变量传入事先录制好的或手工编写的测试脚本中。,七.拓展-数据驱动(文本、表格等),常用操作:导入模块 import xlrd打开Excel文件读取

29、数据data=xlrd.open_workbook(excelFile.xls)获取一个工作表table=data.sheets()0#通过索引顺序获取table=data.sheet_by_index(0)#通过索引顺序获取table=data.sheet_by_name(uSheet1)#通过名称获取整行和整列的值(数组)table.row_values(i)table.col_values(i)获取行数和列数nrows=table.nrowsncols=table.ncols获取单元格cell_A1=table.cell(0,0).valuecell_C4=table.cell(2,3).value,七.拓展-数据驱动(文本、表格等),例子:import xlrddata=xlrd.open_workbook(companylist.xlsx)table=data.sheets()0table_value1=str(table.cell(1,0).value),实例:,结果:,相关资料:1、Python的基础教程:http:/第2版.pdf2、Selenium2.0 WebDriver入门指南:http:/selenium webdriver(python)第三版.pdf http:/,Thank you,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号