




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Selenium+Webdriver+Python自动化测试环境Selenium+Webdriver+Python自动化测试1一.Selenium+Webdriver+Python基本框架的介绍二.自动化测试环境的搭建三.selenium-ide脚本录制和脚本写作四.unittest的简单介绍及使用五.网页元素的定位六.浏览器的基本操作七.拓展:(1)测试报告的生成(2)数据驱动(文本、表格等)一.Selenium+Webdriver+Python基本框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基本框3一.Selenium+Webdriver+Python基本框架介绍一.Selenium+Webdriver+Python基本框4一.Selenium+Webdriver+Python基本框架介绍Selenium:1、Selenium脚本录制和回放2、Selenium自动化脚本(.py)编写3、Selenium测试套(Testsuite)初始化,预置条件用例执行部分清理,还原初始环境4、截图以及结果报告的生成一.Selenium+Webdriver+Python基本框5一.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表格进行读操作)等脚本开发脚本执行辅助脚本录制一.Selenium+Webdriver+Python框架的6第一步:下载并安装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(推荐使用2.7.x版本)二.7第四步:下载并安装基于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就可实现相应的功能。二.自动化测试环境的搭建第四步:下载并安装基于Python的Selenium包二.自8二.自动化测试环境的搭建#验证Selenium安装是否成功#功能:打开巨潮网主页,在搜索栏输入000001进行搜索#coding=utf-8fromseleniumimportwebdriver#Keys提供键盘操作frommon.keysimportKeysimporttime#打开Firefox浏览器driver=webdriver.Firefox()#打开巨潮网主页driver.get("/cninfo-new/index")#在搜索栏输入000001driver.find_element_by_id("common_top_input_obj").send_keys("000001")#回车进行搜索driver.find_element_by_id("common_top_input_obj").send_keys(Keys.ENTER)#延迟2秒time.sleep(2)#关闭浏览器driver.quit()
二.自动化测试环境的搭建9Selenium的IDE(集成开发环境)是一个易于使用的Firefox插件,用于开发Selenium测试案例。它提供了一个图形用户界面,用于记录使用Firefox浏览器,用来学习和使用Selenium用户操作,但它只能用于Firefox浏览器不支持其它浏览器。然而,所记录的脚本可以被转换成由Selenium支持多种编程语言和脚本可以在各种其它的浏览器,以及被执行。
脚本录制步骤:
第一步:打开火狐浏览器,在地址栏上输入被测网页的URL.第二步:菜单栏:工具-selenium-ide打开后,在的selenium-ide地址栏输入相同的URL.第三步:点击开始录制第四步:在浏览器中进行相应的操作第五步:点击结束录制,查看并回放SeleniumIDE录制的结果第六步:脚本导出(选择导出需要的语言脚本:Python2/Unittest/webdiver
)三.selenium-ide脚本录制和脚本写作Selenium的IDE(集成开发环境)是一个易于使用的Fi10三.selenium-ide脚本录制和脚本写作三.selenium-ide脚本录制和脚本写作11三.selenium-ide脚本录制和脚本写作三.selenium-ide脚本录制和脚本写作12三.selenium-ide脚本录制和脚本写作IDE录制脚本存在局限和问题:
1、脚本不稳定,回放经常出错。(部分操作捕获不到)
2、阅读性差,不知道自动化测试执行了具体哪些操作,和实现什么功能。(注释)
3、如果web页面中的个别元素发生了变化,所有涉及该元素的脚本需要修改。
4、元素的id或部分文字是动态的,即每次执行的脚本都是不同的。(参数化)5.缺少对实际结果进行判断的语句。(断言)……等等三.selenium-ide脚本录制和脚本写作IDE录制脚本13打开IDLE(pythonGUI)>OPEN:加载录制导出的脚本,进行脚本编写。三.selenium-ide脚本录制和脚本写作打开IDLE(pythonGUI)>OPEN:三.se14四.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实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。四.unittest的简单介绍及使用TestCase:Tes15整个流程:首先是要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,整个过程集成在unittest.main模块中。四.unittest的简单介绍及使用TestFixture:对一个测试用例环境的搭建和销毁,通过覆盖TestCase的setUp()和tearDown()方法来实现。这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp()中建立数据库连接以及进行一些初始化,在tearDown()中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的TestCase留下一个干净的环境。整个流程:首先是要写好TestCase,然后由TestLoa16一个完整的测试脚本包含:1.importunittest
2.定义一个继承自unittest.TestCase的测试用例类
3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
4.定义测试用例,名字以test开头。
5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
6.调用unittest.main()启动测试
7.如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,也可
以添加-v参数显示详细信息。四.unittest的简单介绍及使用一个完整的测试脚本包含:四.unittest的简单介绍及使用17四.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的简单介绍及使用介绍以下unittest18四.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的简单介绍及使用第2种调用方法:自己创建19四.unittest的简单介绍及使用测试主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。常见的断言方法有:四.unittest的简单介绍及使用测试主要是调用asser20selenium对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()五.网页元素的定位selenium对web各元素的操作首先就要先定位元素,定位21五.网页元素的定位下面是百度输入框的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”);五.网页元素的定位22五.网页元素的定位有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link定位<ahref=””>baidu</a>>7.通过link定位: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("//tr[7]/td[2]")五.网页元素的定位有时候不是一个输入框也不是一个按钮,而是一23六.浏览器的基本操作选择浏览器:driver
=
webdriver.Firefox()打开url:driver.get("")前进/后退: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_name”)对话框操作:driver.switch_to_alert()
#选择窗口对象截取当前页面:driver.get_screenshot_as_file('/Screenshots/foo.png')关闭浏览器:driver.quit()/driver.close()……常用操作:六.浏览器的基本操作选择浏览器:driver
=
webd24六.浏览器的基本操作ActionChains类鼠标操作的常用方法:引入ActionChains类:frommon.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()六.浏览器的基本操作ActionChains类鼠标操作的常用25六.浏览器的基本操作键盘事件:引入Keys类包:frommon.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)
六.浏览器的基本操作键盘事件:26七.拓展-测试报告的生成#导入测试报告生成的模块importHTMLTestRunnersuite=unittest.TestSuite()#
定义生成测试报告的名称
filename1=r".result\"+str(time.strftime('%Y%m%d%H%M%S'))+".html"
fp=file(filename1,'wb')#定义测试报告的路径,标题,描述等内容
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'自动化测试报告',description=u'自动化测试报告')#执行测试脚本,并生成测试报告
runner.run(suite)报告的内容:七.拓展-测试报告的生成#导入测试报告生成的模块27七.拓展-数据驱动(文本、表格等)文本:
例子:作用是获取data_file文本中内容,存放在列表中,作为输入。
data_file的内容:姓名性别年龄张三男20李四男24
……
defdatatouch(i):
source=open("./data_file.txt","r")
values=source.readlines()
word=values[i].split()
returnwordData_1=datatouch(1)Test_value1=str(Data_1[0])数据驱动:从某个数据文件(例如文本、Excel文件、CSV文件、数据库等)中读取输入、输出的测试数据,然后通过变量传入事先录制好的或手工编写的测试脚本中。七.拓展-数据驱动(文本、表格等)文本:例子:作用是获28七.拓展-数据驱动(文本、表格等)常用操作:导入模块importxlrd打开Excel文件读取数据data=xlrd.open_workbook('excelFile.xls')获取一个工作表table=data.sheets()[0]
#通过索引顺序获取table=data.sheet_by_index(0)#通过索引顺序获取table=data.sheet_by_name(u'Sheet1')#通过名称获取整行和整列的值(数组)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七.拓展-数据驱动(文本、表格等)常用操作:29七.拓展-数据驱动(文本、表格等)例子:importxlrddata=xlrd.open_workbook('companylist.xlsx')table=data.sheets()[0]table_value1=str(table.cell(1,0).value)七.拓展-数据驱动(文本、表格等)例子:30实例:实例:31Selenium+Webdriver+Python自动化测试环境课件32结果:结果:33相关资料:1、Python的基础教程:
/python/python-tutorial.html或《Python基础教程第2版》.pdf2、Selenium2.0WebDriver入门指南:/willSoft/blog/281193、seleniumwebdriver(python)第三版.pdf
/detail/waiwaijsj/72140354、Unittest使用和代码简介:/articles/Yb6rma相关资料:34Selenium+Webdriver+Python自动化测试环境Selenium+Webdriver+Python自动化测试35一.Selenium+Webdriver+Python基本框架的介绍二.自动化测试环境的搭建三.selenium-ide脚本录制和脚本写作四.unittest的简单介绍及使用五.网页元素的定位六.浏览器的基本操作七.拓展:(1)测试报告的生成(2)数据驱动(文本、表格等)一.Selenium+Webdriver+Python基本框36一.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基本框37一.Selenium+Webdriver+Python基本框架介绍一.Selenium+Webdriver+Python基本框38一.Selenium+Webdriver+Python基本框架介绍Selenium:1、Selenium脚本录制和回放2、Selenium自动化脚本(.py)编写3、Selenium测试套(Testsuite)初始化,预置条件用例执行部分清理,还原初始环境4、截图以及结果报告的生成一.Selenium+Webdriver+Python基本框39一.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表格进行读操作)等脚本开发脚本执行辅助脚本录制一.Selenium+Webdriver+Python框架的40第一步:下载并安装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(推荐使用2.7.x版本)二.41第四步:下载并安装基于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就可实现相应的功能。二.自动化测试环境的搭建第四步:下载并安装基于Python的Selenium包二.自42二.自动化测试环境的搭建#验证Selenium安装是否成功#功能:打开巨潮网主页,在搜索栏输入000001进行搜索#coding=utf-8fromseleniumimportwebdriver#Keys提供键盘操作frommon.keysimportKeysimporttime#打开Firefox浏览器driver=webdriver.Firefox()#打开巨潮网主页driver.get("/cninfo-new/index")#在搜索栏输入000001driver.find_element_by_id("common_top_input_obj").send_keys("000001")#回车进行搜索driver.find_element_by_id("common_top_input_obj").send_keys(Keys.ENTER)#延迟2秒time.sleep(2)#关闭浏览器driver.quit()
二.自动化测试环境的搭建43Selenium的IDE(集成开发环境)是一个易于使用的Firefox插件,用于开发Selenium测试案例。它提供了一个图形用户界面,用于记录使用Firefox浏览器,用来学习和使用Selenium用户操作,但它只能用于Firefox浏览器不支持其它浏览器。然而,所记录的脚本可以被转换成由Selenium支持多种编程语言和脚本可以在各种其它的浏览器,以及被执行。
脚本录制步骤:
第一步:打开火狐浏览器,在地址栏上输入被测网页的URL.第二步:菜单栏:工具-selenium-ide打开后,在的selenium-ide地址栏输入相同的URL.第三步:点击开始录制第四步:在浏览器中进行相应的操作第五步:点击结束录制,查看并回放SeleniumIDE录制的结果第六步:脚本导出(选择导出需要的语言脚本:Python2/Unittest/webdiver
)三.selenium-ide脚本录制和脚本写作Selenium的IDE(集成开发环境)是一个易于使用的Fi44三.selenium-ide脚本录制和脚本写作三.selenium-ide脚本录制和脚本写作45三.selenium-ide脚本录制和脚本写作三.selenium-ide脚本录制和脚本写作46三.selenium-ide脚本录制和脚本写作IDE录制脚本存在局限和问题:
1、脚本不稳定,回放经常出错。(部分操作捕获不到)
2、阅读性差,不知道自动化测试执行了具体哪些操作,和实现什么功能。(注释)
3、如果web页面中的个别元素发生了变化,所有涉及该元素的脚本需要修改。
4、元素的id或部分文字是动态的,即每次执行的脚本都是不同的。(参数化)5.缺少对实际结果进行判断的语句。(断言)……等等三.selenium-ide脚本录制和脚本写作IDE录制脚本47打开IDLE(pythonGUI)>OPEN:加载录制导出的脚本,进行脚本编写。三.selenium-ide脚本录制和脚本写作打开IDLE(pythonGUI)>OPEN:三.se48四.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实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息。四.unittest的简单介绍及使用TestCase:Tes49整个流程:首先是要写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,整个过程集成在unittest.main模块中。四.unittest的简单介绍及使用TestFixture:对一个测试用例环境的搭建和销毁,通过覆盖TestCase的setUp()和tearDown()方法来实现。这个有什么用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp()中建立数据库连接以及进行一些初始化,在tearDown()中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的TestCase留下一个干净的环境。整个流程:首先是要写好TestCase,然后由TestLoa50一个完整的测试脚本包含:1.importunittest
2.定义一个继承自unittest.TestCase的测试用例类
3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
4.定义测试用例,名字以test开头。
5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
6.调用unittest.main()启动测试
7.如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,也可
以添加-v参数显示详细信息。四.unittest的简单介绍及使用一个完整的测试脚本包含:四.unittest的简单介绍及使用51四.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的简单介绍及使用介绍以下unittest52四.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的简单介绍及使用第2种调用方法:自己创建53四.unittest的简单介绍及使用测试主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。常见的断言方法有:四.unittest的简单介绍及使用测试主要是调用asser54selenium对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()五.网页元素的定位selenium对web各元素的操作首先就要先定位元素,定位55五.网页元素的定位下面是百度输入框的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”);五.网页元素的定位56五.网页元素的定位有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过link定位<ahref=””>baidu</a>>7.通过link定位: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("//tr[7]/td[2]")五.网页元素的定位有时候不是一个输入框也不是一个按钮,而是一57六.浏览器的基本操作选择浏览器:driver
=
webdriver.Firefox()打开url:driver.get("")前进/后退: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_name”)对话框操作:driver.switch_to_alert()
#选择窗口对象截取当前页面:driver.get_screenshot_as_file('/Screenshots/foo.png')关闭浏览器:driver.quit()/driver.close()……常用操作:六.浏览器的基本操作选择浏览器:driver
=
webd58六.浏览器的基本操作ActionChains类鼠标操作的常用方法:引入ActionChains类:frommon.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()六.浏览器的基本操作ActionChains类鼠标操作的常用59六.浏览器的基本操作键盘事件:引入Keys类包:frommon.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.CON
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年钢筋轻型冷挤压连接设备项目投资价值分析报告
- 2025至2030年直动式行程阀项目投资价值分析报告
- 2025至2030年新型电动开窗机项目投资价值分析报告
- 2025年摩托车链条调节器项目可行性研究报告
- 2025年实时高解像度四画面分割器项目可行性研究报告
- 见习生实训合作协议合同2025
- 国际市场独家代理销售合同
- 度劳动合同代收协议书
- 培训机构场地租赁合同模板
- 理疗设备采购与租赁合同范本
- 2025年高考百日誓师大会校长致辞(二)
- 2025年高考数学复习核心考点(新高考专用)专题5.3平面向量的数量积及其应用【八大题型】特训(学生版+解析)
- 2025年中国万宝工程有限公司校园招聘笔试参考题库附带答案详解
- 2025年常州机电职业技术学院单招职业适应性测试题库有完整答案
- 2025年河南机电职业学院单招职业技能测试题库及参考答案
- 第11课《山地回忆》课件-2024-2025学年统编版语文七年级下册
- 2024年皖西卫生职业学院单招职业适应性测试题库及答案解析
- 石油工程设计大赛采油单项组
- 2024年湖南省长沙市中考数学试题(含解析)
- 部编人教版语文小学六年级下册第四单元主讲教材解读(集体备课)
- 回族做礼拜的念词集合6篇
评论
0/150
提交评论