




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Content工具简介与环境搭建RobotFramework+Selenium使用持续集成BDD简介与lettuceContent1工具列表RobotFrameworkSeleniumFireBugJenkinslettuce工具列表RobotFramework2RobotFramework是什么RobotFramework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。RobotFramework是什么RobotFrame3自动化测试框架的职责定义一种统一的方式来书写和组织测试用例(测试步骤,测试数据与期待返回值);控制测试用例的执行过程;生成测试报告和测试日志;自动化测试框架的职责定义一种统一的方式来书写和组织测试用例(4RobotFramework特性易于使用,采用表格式语法,统一测试用例格式;重用性好,可以利用现有关键字来组合新关键字;支持变量;支持创建基于数据驱动的测试用例。结果报告和日志采用HTML格式,易于阅读;提供标签以分类和选择将被执行的测试用例;平台、应用无关;功能全面,支持WEB测试(Selenium)、JavaGUI测试易于扩展,提供了简单API,用户可以自定义的基于Python或者Java的测试库;易于集成,提供了命令行接口和基于XML的输出文件;易于与版本管理集成RobotFramework特性易于使用,采用表格式语法,5Selenium简介Selenium是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。与其他测试工具相比,使用Selenium的最大好处是:Selenium测试直接在浏览器中运行,就像真实用户所做的一样。Selenium测试可以在Windows、Linux和上的InternetExplorer、Mozilla和Firefox中运行。其他测试工具都不能覆盖如此多的平台。RFS=RobotFramework+Selenium(WD)Selenium简介Selenium是ThoughtW6RobotFramework架构RobotFramework架构7环境搭建在线安装安装Python,使用Python-2.7安装wxPython2.8pipinstallrobotframeworkpipinstallrobotframework-ridepipinstallrobotframework-selenium2library浏览器driver:
/p/selenium/downloads/list环境搭建在线安装安装Python,使用Python8环境搭建离线安装1、/pypi/decorator/2、/pypi/robotframework/#downloads3、/pypi/robotframework-selenium2library/1.5.04、/pypi/selenium/2.40.0环境搭建离线安装9中文支持在[PythonDir]\Lib\site-packages\robot\utils下的encodingsniffer.py文件中,找到DEFAULT_OUTPUT_ENCODING='cp437':原来的编码是’cp437’将其改成’cp936’(简体中文,gbk)。中文支持在[PythonDir]\Lib\site-pack10*FireBug安装*FireBug安装11FireBug入门使用FireBug入门使用12Content工具简介与环境搭建RobotFramework+Selenium使用持续集成BDD简介与lettuceContent13RFS基本使用入门实例RFS基本使用入门实例14*新建项目*新建项目15*新建测试套件123*新建测试套件12316*新建测试用例132*新建测试用例13217*添加测试库132在测试套件中添加库注意区分大小写*添加测试库132在测试套件中添加库18*编写测试用例打开禅道登录页面输入用户名输入密码单击登录按钮关键字*编写测试用例打开禅道登录页面关键字19*运行测试*运行测试20*运行测试*运行测试21*查看报告*查看报告22*查看日志*查看日志2324*RFS基本使用元素定位24*RFS基本使用元素定位24Selenium支持的定位方式最好以id来定位,如果没有id可以使用Assign
Id
To
Element关键字来为元素分配一个idSelenium支持的定位方式最好以id来定位,如果没有id25*Xpath*Xpath26*Xpath1通过绝对路径定位元素xpath=/html/body/form/input通过相对路径定位元素xpath=//input使用索引来定位元素xpath=//input[2]使用属性值定位元素xpath=//input[@id=’username’]xpath=//input[@id=’username’][@name=’username’]xpath=//input[@id=’username’and@name=’username’]xpath=//input[@id=’username’or@name=’username’]*Xpath1通过绝对路径定位元素27*Xpath2使用属性名称定为元素xpath=//input[@name]使用部分属性值定位元素使用值来匹配任意属性及元素//input[@*=’username’]*Xpath2使用属性名称定为元素28*切换到新的窗口有时,浏览器打开了两个窗口,要跳转到新的窗口才能操作元素进入新的窗口SelectWindow new返回到主窗口SelectWindow main注意:切换到新窗口后,关闭窗口,必须要有一步返回到主页面打开3和3个以上的窗口:@{x} listwindows 首先得到所有窗口的句柄列表selectwindow @{x}[2] 切换到第三个窗口*切换到新的窗口有时,浏览器打开了两个窗口,要跳转到新的窗口29*进入一个frame或iframe有时,需要先进入一个frame或iframe再定位一个元素,这样效率更高,可以使用如下两个关键词进入一个frame或iframeSelectFrame|locator回到最上层frame或iframeUnselectFrame*进入一个frame或iframe有时,需要先进入一个fra30*js定位:(js)
js点击executejavascript document.querySelectorAll('css')[0].click()移动div中内嵌滚动条
(先定位,再移动)移动滚动条到最底端executejavascriptdocument.querySelectorAll('css')[0].scrollTop=10000移动到最顶端executejavascriptdocument.querySelectorAll('css')[0].scrollTop=0正常网页直接进行移动executejavascriptdocument.body.scrollTop=0executejavascriptdocument.scrollTop(0,50)*js定位:(js)
31*js定位:(jQuery)
jQuery定位(定位使用的是css定位)executejavascript $('css').click()jQuery事件executejavascript $('css').click() 定位后点击executejavascript $('css').dblclick() 定位后双击executejavascript $('css').text() 定位后得到元素的文字executejavascript $('css').text('文字') 定位后输入文字返回得到的文字${x} executejavascript return$('css').text()*js定位:(jQuery)
32*css定位:*css定位:33*网页代码:*网页代码:34*css定位实例:*css定位实例:35*css结构定位:1、li>a:选中li标签的子元素a2、li+a:选中li同级的下一个a3、li>a:nth-child(n)/li>a:nth-of-type(n):选中li下第n个ali>a:nth-last-child(n)/li>a:nth-last-of-type(n):选中li下,倒数第n个a如果n=odd表示奇数如果n=even表示偶数4、li>a:last-child/li>a:last-of-type:选中li下最后面一个a
li>a:first-child/li>a:first-of-type:选中li下第一个个a5、li>a:only-child:li下只有1个a的a标签*css结构定位:1、li>a:选中li36RFS基本使用selenium2libraryRFS基本使用selenium2library37*操作浏览器Selenium2Lib提供了与浏览器交互的关键词:OpenBrowserMaximizeBrowserWindowGoToGoBackReloadPageCloseWindowCloseBrowserCloseAllBrowsers*操作浏览器Selenium2Lib提供了与浏览器交互的关键38驱动不同的浏览器Selenium默认的是Firefox浏览器,其他浏览器需要自己的driver1、下载IE的driver2、放到项目目录下驱动不同的浏览器Selenium默认的是Firefox浏览39*常用关键字点击ClickButton|locatorClickElement|locatorClickImage|locatorClickLink|locatorDoubleClickElement|locator有时在IE中,Click不起作用,可以用如下命令来替代PressKey|<id>|\\13或\\10*常用关键字点击40常用关键字输入InputPassword|locator|textInputText|locator|text有时会出现输入之后界面没有的问题,可以用如下命令来触发页面更新PressKey|<id>|\\13或\\10常用关键字输入41*常用关键字按键PressKey|locator|key例子PressKey|text_field|q|PressKey|login_button|\\13|#ASCIIcodefor特殊编码0:Keys.NULL,8:Keys.BACK_SPACE,9:Keys.TAB,10:Keys.RETURN,13:Keys.ENTER,24:Keys.CANCEL,27:Keys.ESCAPE,32:Keys.SPACE,42:Keys.MULTIPLY,43:Keys.ADD,44:Keys.SEPARATOR,45:Keys.SUBTRACT,56:Keys.DECIMAL,57:Keys.DIVIDE,59:Keys.SEMICOLON,61:Keys.EQUALS,127:Keys.DELETE*常用关键字按键43:Keys.ADD,42常用关键字Selenium2Lib提供了和其他界面元素交互的关键词:ElementFocus聚焦Simulate模拟时间触发OpenContextMenu打开ListSelectAllFromListSelectFromListUnselectFromListCheckboxSelectCheckboxUnselectCheckbox常用关键字Selenium2Lib提供了和其他界面元素交互的43常用关键字Selenium2Lib提供了和其他界面元素交互的关键词:RadioButtonSelectRadioButtonFormSubmitFormChooseFile(ForFileUpload)常用关键字Selenium2Lib提供了和其他界面元素交互的44*常用关键字默认情况下,Selenium2会自动等待页面加载完成对于页面AJAX可以使用如下等待页面的关键词:WaitForCondition|condition|timeout=None|error=NoneWaitUntilPageContains|text|timeout=None|error=NoneWaitUntilPageContainsElement|locator|timeout一种调试时可以使用,但是不应该留下来的SleepxSleep关键词是RobotFrameworkBuiltInLibrary提供的/hg/doc/libraries/BuiltIn.html?r=2.6.1*常用关键字默认情况下,Selenium2会自动等待页面加45常用关键字获取页面信息:PageGetTitleGetLocationGetSourceGetMatchingXpathCountElementGetElementAttributeGetValueGetText(AddedByAdamWu)LinkGetAllLinks常用关键字获取页面信息:46常用关键字获取页面信息TableGetTableCellListGetListItemsGetSelectedListLabelGetSelectedListLabelsGetSelectedListValueGetSelectedListValues常用关键字获取页面信息47RFS基本使用弹出窗口处理RFS基本使用弹出窗口处理48*常用关键字AlertShouldBePresentGetAlertMessageChooseCancelOnNextConfirmationChooseOkOnNextConfirmationConfirmAction*常用关键字AlertShouldBePresent49*AutoItLibrary以管理员身份运行cmdpythonsetup.pyinstall导入库AutoItLibrary*AutoItLibrary以管理员身份运行cmd50RFS基本使用编写测试用例RFS基本使用编写测试用例51添加资源资源下面可以放自己的关键字添加资源资源下面可以放自己的关键字52*增加自定义关键字*增加自定义关键字53增加内置模块为资源添加库增加内置模块为资源添加库54引用自定义资源在测试套件中添加资源引用自定义资源在测试套件中添加资源55*使用自定义资源“打开浏览器”已经变颜色了,说明引用正确*使用自定义资源56*参数化:
(一)创建列表形式,适用于少量数据*参数化:
(一)创建列表形式,适用于少量数据57*(二)调用read.py脚本,进行封装,适用于大量数据*(二)调用read.py脚本,进行封装,适用于大量数据58*位置结构:excel文件和read.py文件在同一个目录*位置结构:excel文件和read.py文件在同一个目录59*read.py脚本,代码一览*read.py脚本,代码一览60*写好自动化测试用例的原则要做到流程和数据的分离注意:界面元素id不算数据,不应分离*写好自动化测试用例的原则要做到流程和数据的分离61更新测试用例增加一个新的测试用例这样好吗?更新测试用例增加一个新的测试用例62写好自动化测试用例的原则不断封装,用例复用写好自动化测试用例的原则不断封装,用例复用63*写好自动化测试用例的原则要做到数据和流程的分离不断抽象,消除冗余*写好自动化测试用例的原则要做到数据和流程的分离64写好自动化测试用例的原则要做到数据和流程的分离不断抽象,消除冗余测试用例应该简单易读,避免复杂逻辑写好自动化测试用例的原则要做到数据和流程的分离65*写好自动化测试用例的原则要做到数据和流程的分离不断抽象,消除冗余测试用例应该简单易读,避免复杂逻辑问题:“登录”放在这好吗?*写好自动化测试用例的原则要做到数据和流程的分离66写好自动化测试用例的原则1、要做到流程和数据的分离2、通过不断抽象,消除冗余3、测试用例应尽量简单易读,避免复杂逻辑4、建立测试用例分层架构,并坚守写好自动化测试用例的原则1、要做到流程和数据的分离67测试用例的层次结构测试用例=
测试流程模板+测试数据
测试流程模板=测试流程构件的排列
测试流程构件=测试流程步骤的排列
测试流程步骤=界面交互细节CallSeleniumLibrary测试用例的层次结构测试用例=测试流程模板=测试流程构68RFS基本使用变量和结果验证RFS基本使用变量和结果验证69使用变量使用变量来实现测试目标可变使用变量使用变量来实现测试目标可变70使用变量使用变量来实现测试目标可变运行时可以指定变量取值切换不同环境使用变量使用变量来实现测试目标可变71使用变量可以使用变量来获得界面返回值,用于验证需要注意关键词里面的返回值变量只在关键词之内有效,可以通过如下关键词来提升变量的可见范围,但是最好只提升到Test级别,因为测试用例最好是相互独立的SetGlobalVariableSetSuiteVariableSetTestVariable使用变量可以使用变量来获得界面返回值,用于验证72常用关键字验证页面是否包含相应结果PagePageShould(Not)ContainButtonPageShould(Not)ContainCheckboxPageShould(Not)ContainElementPageShould(Not)ContainImagePageShould(Not)ContainLinkPageShould(Not)ContainListPageShould(Not)ContainRadioButtonPageShould(Not)ContainTextfieldLocation&TitleLocationShouldBeLocationShouldContainTitleShouldBe常用关键字验证页面是否包含相应结果73常用关键字验证页面是否包含相应结果TextCurrentFrameContainsPageShouldContainPageShouldNotContainTextfieldValueShouldBeElementElementShouldBeDisabledElementShouldBeEnabledElementShouldBeVisibleElementShouldContainElementShouldNotBeVisibleElementTextShouldBe常用关键字验证页面是否包含相应结果74常用关键字验证页面是否包含相应结果ListListSelectionShouldBeListShouldHaveNoSelectionsCheckboxCheckboxShouldBeSelectedCheckboxShouldNotBeSelectedRadioButtonRadioButtonShouldBeSetToRadioButtonShouldNotBeSelected常用关键字验证页面是否包含相应结果75常用关键字验证页面是否包含相应结果TableTableCellShouldContainTableColumnShouldContainTableFooterShouldContainTableHeaderShouldContainTableRowShouldContainTableShouldContainTextfieldShouldContainXpathXpathShouldMatchXTimes常用关键字验证页面是否包含相应结果76DBLibrary1、下载DBLibrary:http://franz-see.github.io/Robotframework-Database-Library/2、安装pythonsetup.pyinstall3、导入库:DatabaseLibrary4、安装MySQLInterface/petehunt/PyMySQLDBLibrary1、下载DBLibrary:http:/77DBLibraryConnectToDatabaseUsingCustomParamsDisconnectFromDatabaseQueryExecuteSqlStringRowCountIsEqualToXTableMustExistCheckIfExistsInDatabaseDBLibraryConnectToDatabaseU78RFS基本使用数据驱动RFS基本使用数据驱动79数据驱动可以利用Template实现数据驱动数据驱动可以利用Template实现数据驱动80创建一个Template新建一个关键字LoginTemplate创建一个Template新建一个关键字LoginTempla81引用Template注意:用例中如果使用了这个template,那么用例步骤里面就只用填写传递的参数就可以了引用Template注意:用例中如果使用了这个templat82RFS基本使用RFS中的编程RFS基本使用RFS中的编程83分支与流程控制常用关键字RunKeywordIfRunKeywordIfTestPassed/Failed(onlyforteardown)SetVariableIf分支与流程控制常用关键字84常用关键字Evaluate常用关键字Evaluate85RFS基本使用自定义关键字RFS基本使用自定义关键字86使用Python开发自定义关键字我们来开发一个产生随机数的库1、新建一个文件:MyLibrary.py使用Python开发自定义关键字我们来开发一个产生随机数的库87引用定义关键字1、把它放到项目文件夹下2、导入自己的库MyLibrary.py引用定义关键字1、把它放到项目文件夹下88使用自己的库产生4到10的随机数使用自己的库产生4到10的随机数89Content验收测试驱动开发概述工具简介与环境搭建RobotFramework+Selenium使用持续集成BDD简介与lettuceContent验收测试驱动开发概述90持续集成(CI)持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。安装Jenkins持续集成(CI)持续集成是一种软件开发实践,即团队开发成员经91打开Jenkinshttp://localhost:8080打开Jenkinshttp://localhost:808092添加节点选择系统管理管理节点添加节点选择系统管理管理节点93添加节点新建节点填入节点名称添加节点新建节点94添加节点#ofexecutors:如果使用RF的话必须填1RemoteFSroot:远程机的工作目录Launchmethod:如果选其他的可能会出错添加节点#ofexecutors:如果使用RF的话必须填95启动节点
建议使用这种方式启动节点96添加插件1、系统管理管理插件
2、高级—选择文件—上传
(上传后需重启Jenkins)添加插件1、系统管理管理插件97新建任务1、在首页新建任务 2、填入名称,选择自由风格即可新建任务1、在首页新建任务 2、填入98新建任务新建任务99Content验收测试驱动开发概述工具简介与环境搭建RobotFramework+Selenium使用持续集成BDD简介与lettuceContent验收测试驱动开发概述100*BDD简介BDD:BehaviorDrivenDevelopment,行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。ThecommonBDDapproachbasicallyconsistsin:writingsomeunittestsrunningthesetestsmakingthesetestsfailwritingcodemakingthecodepassthesetests(greenstatus)*BDD简介BDD:BehaviorDrivenDeve101lettuceLettuce是一个基于Cucumber(目前比lettuce更强大的BDD工具,Cucumber是基于ruby语言的)的简单的BDD测试工具。Lettuce是基于Python语言的。在线安装:pipinstalllettucelettuceLettuce是一个基于Cucumber(目102Lettuce流程Lettuce流程103Lettuce+selenium进行Web测试1、安装lettucepipinstalllettucehttp://lettuce.it2、安装lettuce_webdriverpipinstalllettuce_webdriver/pypi/lettuce_webdriver3、安装nosepipinstallnose/pypi/nose/Lettuce+selenium进行Web测试1、安装let104一个例子(1)Lettuce的目录结构.../test/features/baidu.feature
/step_definitions/setps.py
/support/terrain.py一个例子(1)Lettuce的目录结构105*一个例子(2)*一个例子(2)106一个例子(3)*一个例子(3)*107*一个例子(4)Lettuce的traint文件*一个例子(4)Lettuce的traint文件108一个例子(5)运行Lettuce直接在test目录下运行lettuce命令一个例子(5)运行Lettuce直接在test目录下运109RFS自动化测试培训课件110Content工具简介与环境搭建RobotFramework+Selenium使用持续集成BDD简介与lettuceContent111工具列表RobotFrameworkSeleniumFireBugJenkinslettuce工具列表RobotFramework112RobotFramework是什么RobotFramework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。RobotFramework是什么RobotFrame113自动化测试框架的职责定义一种统一的方式来书写和组织测试用例(测试步骤,测试数据与期待返回值);控制测试用例的执行过程;生成测试报告和测试日志;自动化测试框架的职责定义一种统一的方式来书写和组织测试用例(114RobotFramework特性易于使用,采用表格式语法,统一测试用例格式;重用性好,可以利用现有关键字来组合新关键字;支持变量;支持创建基于数据驱动的测试用例。结果报告和日志采用HTML格式,易于阅读;提供标签以分类和选择将被执行的测试用例;平台、应用无关;功能全面,支持WEB测试(Selenium)、JavaGUI测试易于扩展,提供了简单API,用户可以自定义的基于Python或者Java的测试库;易于集成,提供了命令行接口和基于XML的输出文件;易于与版本管理集成RobotFramework特性易于使用,采用表格式语法,115Selenium简介Selenium是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。与其他测试工具相比,使用Selenium的最大好处是:Selenium测试直接在浏览器中运行,就像真实用户所做的一样。Selenium测试可以在Windows、Linux和上的InternetExplorer、Mozilla和Firefox中运行。其他测试工具都不能覆盖如此多的平台。RFS=RobotFramework+Selenium(WD)Selenium简介Selenium是ThoughtW116RobotFramework架构RobotFramework架构117环境搭建在线安装安装Python,使用Python-2.7安装wxPython2.8pipinstallrobotframeworkpipinstallrobotframework-ridepipinstallrobotframework-selenium2library浏览器driver:
/p/selenium/downloads/list环境搭建在线安装安装Python,使用Python118环境搭建离线安装1、/pypi/decorator/2、/pypi/robotframework/#downloads3、/pypi/robotframework-selenium2library/1.5.04、/pypi/selenium/2.40.0环境搭建离线安装119中文支持在[PythonDir]\Lib\site-packages\robot\utils下的encodingsniffer.py文件中,找到DEFAULT_OUTPUT_ENCODING='cp437':原来的编码是’cp437’将其改成’cp936’(简体中文,gbk)。中文支持在[PythonDir]\Lib\site-pack120*FireBug安装*FireBug安装121FireBug入门使用FireBug入门使用122Content工具简介与环境搭建RobotFramework+Selenium使用持续集成BDD简介与lettuceContent123RFS基本使用入门实例RFS基本使用入门实例124*新建项目*新建项目125*新建测试套件123*新建测试套件123126*新建测试用例132*新建测试用例132127*添加测试库132在测试套件中添加库注意区分大小写*添加测试库132在测试套件中添加库128*编写测试用例打开禅道登录页面输入用户名输入密码单击登录按钮关键字*编写测试用例打开禅道登录页面关键字129*运行测试*运行测试130*运行测试*运行测试131*查看报告*查看报告132*查看日志*查看日志133134*RFS基本使用元素定位24*RFS基本使用元素定位134Selenium支持的定位方式最好以id来定位,如果没有id可以使用Assign
Id
To
Element关键字来为元素分配一个idSelenium支持的定位方式最好以id来定位,如果没有id135*Xpath*Xpath136*Xpath1通过绝对路径定位元素xpath=/html/body/form/input通过相对路径定位元素xpath=//input使用索引来定位元素xpath=//input[2]使用属性值定位元素xpath=//input[@id=’username’]xpath=//input[@id=’username’][@name=’username’]xpath=//input[@id=’username’and@name=’username’]xpath=//input[@id=’username’or@name=’username’]*Xpath1通过绝对路径定位元素137*Xpath2使用属性名称定为元素xpath=//input[@name]使用部分属性值定位元素使用值来匹配任意属性及元素//input[@*=’username’]*Xpath2使用属性名称定为元素138*切换到新的窗口有时,浏览器打开了两个窗口,要跳转到新的窗口才能操作元素进入新的窗口SelectWindow new返回到主窗口SelectWindow main注意:切换到新窗口后,关闭窗口,必须要有一步返回到主页面打开3和3个以上的窗口:@{x} listwindows 首先得到所有窗口的句柄列表selectwindow @{x}[2] 切换到第三个窗口*切换到新的窗口有时,浏览器打开了两个窗口,要跳转到新的窗口139*进入一个frame或iframe有时,需要先进入一个frame或iframe再定位一个元素,这样效率更高,可以使用如下两个关键词进入一个frame或iframeSelectFrame|locator回到最上层frame或iframeUnselectFrame*进入一个frame或iframe有时,需要先进入一个fra140*js定位:(js)
js点击executejavascript document.querySelectorAll('css')[0].click()移动div中内嵌滚动条
(先定位,再移动)移动滚动条到最底端executejavascriptdocument.querySelectorAll('css')[0].scrollTop=10000移动到最顶端executejavascriptdocument.querySelectorAll('css')[0].scrollTop=0正常网页直接进行移动executejavascriptdocument.body.scrollTop=0executejavascriptdocument.scrollTop(0,50)*js定位:(js)
141*js定位:(jQuery)
jQuery定位(定位使用的是css定位)executejavascript $('css').click()jQuery事件executejavascript $('css').click() 定位后点击executejavascript $('css').dblclick() 定位后双击executejavascript $('css').text() 定位后得到元素的文字executejavascript $('css').text('文字') 定位后输入文字返回得到的文字${x} executejavascript return$('css').text()*js定位:(jQuery)
142*css定位:*css定位:143*网页代码:*网页代码:144*css定位实例:*css定位实例:145*css结构定位:1、li>a:选中li标签的子元素a2、li+a:选中li同级的下一个a3、li>a:nth-child(n)/li>a:nth-of-type(n):选中li下第n个ali>a:nth-last-child(n)/li>a:nth-last-of-type(n):选中li下,倒数第n个a如果n=odd表示奇数如果n=even表示偶数4、li>a:last-child/li>a:last-of-type:选中li下最后面一个a
li>a:first-child/li>a:first-of-type:选中li下第一个个a5、li>a:only-child:li下只有1个a的a标签*css结构定位:1、li>a:选中li146RFS基本使用selenium2libraryRFS基本使用selenium2library147*操作浏览器Selenium2Lib提供了与浏览器交互的关键词:OpenBrowserMaximizeBrowserWindowGoToGoBackReloadPageCloseWindowCloseBrowserCloseAllBrowsers*操作浏览器Selenium2Lib提供了与浏览器交互的关键148驱动不同的浏览器Selenium默认的是Firefox浏览器,其他浏览器需要自己的driver1、下载IE的driver2、放到项目目录下驱动不同的浏览器Selenium默认的是Firefox浏览149*常用关键字点击ClickButton|locatorClickElement|locatorClickImage|locatorClickLink|locatorDoubleClickElement|locator有时在IE中,Click不起作用,可以用如下命令来替代PressKey|<id>|\\13或\\10*常用关键字点击150常用关键字输入InputPassword|locator|textInputText|locator|text有时会出现输入之后界面没有的问题,可以用如下命令来触发页面更新PressKey|<id>|\\13或\\10常用关键字输入151*常用关键字按键PressKey|locator|key例子PressKey|text_field|q|PressKey|login_button|\\13|#ASCIIcodefor特殊编码0:Keys.NULL,8:Keys.BACK_SPACE,9:Keys.TAB,10:Keys.RETURN,13:Keys.ENTER,24:Keys.CANCEL,27:Keys.ESCAPE,32:Keys.SPACE,42:Keys.MULTIPLY,43:Keys.ADD,44:Keys.SEPARATOR,45:Keys.SUBTRACT,56:Keys.DECIMAL,57:Keys.DIVIDE,59:Keys.SEMICOLON,61:Keys.EQUALS,127:Keys.DELETE*常用关键字按键43:Keys.ADD,152常用关键字Selenium2Lib提供了和其他界面元素交互的关键词:ElementFocus聚焦Simulate模拟时间触发OpenContextMenu打开ListSelectAllFromListSelectFromListUnselectFromListCheckboxSelectCheckboxUnselectCheckbox常用关键字Selenium2Lib提供了和其他界面元素交互的153常用关键字Selenium2Lib提供了和其他界面元素交互的关键词:RadioButtonSelectRadioButtonFormSubmitFormChooseFile(ForFileUpload)常用关键字Selenium2Lib提供了和其他界面元素交互的154*常用关键字默认情况下,Selenium2会自动等待页面加载完成对于页面AJAX可以使用如下等待页面的关键词:WaitForCondition|condition|timeout=None|error=NoneWaitUntilPageContains|text|timeout=None|error=NoneWaitUntilPageContainsElement|locator|timeout一种调试时可以使用,但是不应该留下来的SleepxSleep关键词是RobotFrameworkBuiltInLibrary提供的/hg/doc/libraries/BuiltIn.html?r=2.6.1*常用关键字默认情况下,Selenium2会自动等待页面加155常用关键字获取页面信息:PageGetTitleGetLocationGetSourceGetMatchingXpathCountElementGetElementAttributeGetValueGetText(AddedByAdamWu)LinkGetAllLinks常用关键字获取页面信息:156常用关键字获取页面信息TableGetTableCellListGetListItemsGetSelectedListLabelGetSelectedListLabelsGetSelectedListValueGetSelectedListValues常用关键字获取页面信息157RFS基本使用弹出窗口处理RFS基本使用弹出窗口处理158*常用关键字AlertShouldBePresentGetAlertMessageChooseCancelOnNextConfirmationChooseOkOnNextConfirmationConfirmAction*常用关键字AlertShouldBePresent159*AutoItLibrary以管理员身份运行cmdpythonsetup.pyinstall导入库AutoItLibrary*AutoItLibrary以管理员身份运行cmd160RFS基本使用编写测试用例RFS基本使用编写测试用例161添加资源资源下面可以放自己的关键字添加资源资源下面可以放自己的关键字162*增加自定义关键字*增加自定义关键字163增加内置模块为资源添加库增加内置模块为资源添加库164引用自定义资源在测试套件中添加资源引用自定义资源在测试套件中添加资源165*使用自定义资源“打开浏览器”已经变颜色了,说明引用正确*使用自定义资源166*参数化:
(一)创建列表形式,适用于少量数据*参数化:
(一)创建列表形式,适用于少量数据167*(二)调用read.py脚本,进行封装,适用于大量数据*(二)调用read.py脚本,进行封装,适用于大量数据168*位置结构:excel文件和read.py文件在同一个目录*位置结构:excel文件和read.py文件在同一个目录169*read.py脚本,代码一览*read.py脚本,代码一览170*写好自动化测试用例的原则要做到流程和数据的分离注意:界面元素id不算数据,不应分离*写好自动化测试用例的原则要做到流程和数据的分离171更新测试用例增加一个新的测试用例这样好吗?更新测试用例增加一个新的测试用例172写好自动化测试用例的原则不断封装,用例复用写好自动化测试用例的原则不断封装,用例复用173*写好自动化测试用例的原则要做到数据和流程的分离不断抽象,消除冗余*写好自动化测试用例的原则要做到数据和流程的分离174写好自动化测试用例的原则要做到数据和流程的分离不断抽象,消除冗余测试用例应该简单易读,避免复杂逻辑写好自动化测试用例的原则要做到数据和流程的分离175*写好自动化测试用例的原则要做到数据和流程的分离不断抽象,消除冗余测试用例应该简单易读,避免复杂逻辑问题:“登录”放在这好吗?*写好自动化测试用例的原则要做到数据和流程的分离176写好自动化测试用例的原则1、要做到流程和数据的分离2、通过不断抽象,消除冗余3、测试用例应尽量简单易读,避免复杂逻辑4、建立测试用例分层架构,并坚守写好自动化测试用例的原则1、要做到流程和数据的分离177测试用例的层次结构测试用例=
测试流程模板+测试数据
测试流程模板=测试流程构件的排列
测试流程构件=测试流程步骤的排列
测试流程步骤=界面交互细节CallSeleniumLibrary测试用例的层次结构测试用例=测试流程模板=测试流程构178RFS基本使用变量和结果验证RFS基本使用变量和结果验证179使用变量使用变量来实现测试目标可变使用变量使用变量来实现测试目标可变180使用变量使用变量来实现测试目标可变运行时可以指定变量取值切换不同环境使用变量使用变量来实现测试目标可变181使用变量可以使用变量来获得界面返回值,用于验证需要注意关键词里面的返回值变量只在关键词之内有效,可以通过如下关键词来提升变量的可见范围,但是最好只提升到Test级别,因为测试用例最好是相互独立的SetGlobalVariableSetSuiteVariableSetTestVariable使用变量可以使用变量来获得界面返回值,用于验证182常用关键字验证页面是否包含相应结果PagePageShould(Not)ContainButtonPageShould(Not)ContainCheckboxPageShould(Not)ContainElementPageShould(Not)ContainImagePageShould(Not)ContainLinkPageShould(Not)ContainListPageShould(Not)ContainRadioButtonPageShould(Not)ContainTextfieldLocation&TitleLocationShouldBeLocationShouldContainTitleShouldBe常用关键字验证页面是否包含相应结果183常用关键字验证页面是否包含相应结果TextCurrentFrameContainsPageShouldContainPageShouldNotContainTextfieldValueShouldBeElementElementShouldBeDisabledElementShouldBeEnabledElementShouldBeVisibleElementShouldContainElementShouldNotBeVisibleElementTextShouldBe常用关键字验证页面是否包含相应结果184常用关键字验证页面是否包含相应结果ListListSelectionShouldBeListShouldHaveNoSelectionsCheckboxCheckboxShouldBeSelectedCheckboxShouldNotBeSelectedRadioButtonRadioButtonShouldBeSetToRadioButtonShouldNotBeSelected常用关键字验证页面是否包含相应结果185常用关键字验证页面是否包含相应结果TableTableCellShouldContainTableColumnShouldContainTableFooterShouldContainTableHeaderShouldContainTableRowShouldContainTableShouldContainTextfieldShouldContainXpathXpathShouldMatchXTimes常用关键字验证页面是否包含相应结果186DBLibrary1、下载DBLibrary:http://franz-see.github.io/Robotframework-Database-Library/2、安装pythonsetup.pyinstall3、导入库:DatabaseLibrary4、安装MySQLInterface/petehunt/PyMySQLDBLibrary1、下载DBLibrary:http:/187DBLibraryConnectToDatabaseUsingCustomParamsDisconnectFromDatabaseQueryExecuteSqlStringRowCountIsEqualToXTableMustExistCheckIfExistsInDatabaseDBLibraryConnectToDatabaseU188RFS基本使用数据驱动RFS基本使用数据驱动189数据驱动可以利用Template实现数据驱动数据驱动可以利用Template实现数据驱动190创建一个Template新建一个关键字LoginTemplate创建一个Template新建一个关键字LoginTempla191引用Template注意:用例中如果使用了这个template,那么用例步骤里
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年智能机器人研发试题及答案
- 2024年互联网架构开发最佳策略试题及答案
- 酒店业绩提升计划与目标试题及答案
- 网络工程师VPN配置试题及答案
- 2025年镇咳药合作协议书
- 市场营销师必须掌握的法则试题及答案
- 案例分析ESG商业分析师试题及答案
- 互联网架构开发的经典试题及答案分享
- 网络工程师实际案例试题及答案
- 酒店管理师未来展望试题及答案
- 《人间词话》ppt课件(PPT 50页)
- 生物质循环流化床锅炉最终版.ppt
- DB33_T 2329-2021农田面源污染控制氮磷生态拦截沟渠系统建设规范(可复制)
- T∕CGMA 033001-2018 压缩空气站能效分级指南
- 固定收益部绩效考核办法
- 光纤端面清洗操作规范方案和判定标准
- 小型液压机液压系统设计
- CAPA纠正和预防措施标准管理规程
- 1 ultrafleXtreme质谱仪
- 高中三年成绩单模板(新留学)
- 2020急诊科护士分层培训计划
评论
0/150
提交评论