很久没有继续分享关于自动化测试相关的东西了,自动化在现今的测试领域已经愈来愈重要了,大部分公司在测试岗位招聘中都须要会相关的自动化测试知识。而 RobotFramework自动化测试框架 是自动化测试中javascript
用的最多一个框架,基于Python编程语言设计的可扩展的关键字驱动模式的测试自动化框架,具有良好的可扩展性,能够经过xml-rpc服务扩展支持其它的经常使用编程语言,能够同时测试多种类型的客户端或者接口,能够支持进行分布式测试执行。html
Robot Framework具备以下的特色:java
本文章节目录:python
一、Input Textweb
二、Click Buttonchrome
三、Click Element数据库
四、Click Link编程
五、Add Cookie,Get Cookies 和Delete Cookie浏览器
六、Get All Links缓存
七、Choose File(文件上传)
八、Get Text
九、Get Title
说明:咱们这里是紧接着RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser 这篇日后继续的。做者的原创文章,转载时请注明出处:做者为张永清,连接为https://www.cnblogs.com/laoqing/articles/11831022.html。
一、Input Text
Input Text关键字用于模拟向一个输入框中输入文字内容,该关键字接收两个参数[ locator | text ],locator参数指的定位界面元素的方式,text参数指的是须要输入的内容。
示例1:打开百度,向输入框中输入Robot FrameWork,这里采用id的方式来定位界面的输入框元素,能够采用谷歌浏览器自带的开发者工具查看该输入框的元素,以下图所示。
Open Browser http://www.baidu.com chrome
Input Text id=kw Robot FrameWork
执行结果以下:以下图中所示。
Starting test: RobotFrameworkTest1.TestSuite6.TestCase0002
20170529 15:44:23.918 : INFO : Opening browser 'chrome' to base url 'http://www.baidu.com'
20170529 15:44:32.068 : INFO : Typing text 'Robot FrameWork' into text field 'id=kw'
Ending test: RobotFrameworkTest1.TestSuite6.TestCase0002
二、Click Button
Click Button关键字用于模拟点击页面中的按钮,该关键字接收一个参数[ locator ]。
示例1:打开百度,向输入框中输入Robot FrameWork后,点击百度一下按钮,进行搜索。
这里经过id=su来定位百度一下这个按钮,以下图中所示。
Open Browser http://www.baidu.com chrome
Input Text id=kw Robot FrameWork
Click Button id=su
执行结果以下:以下图中所示。
Starting test: RobotFrameworkTest1.TestSuite6.TestCase0002
20170529 16:01:02.161 : INFO : Opening browser 'chrome' to base url 'http://www.baidu.com'
20170529 16:01:12.505 : INFO : Typing text 'Robot FrameWork' into text field 'id=kw'
20170529 16:01:12.917 : INFO : Clicking button 'id=su'.
Ending test: RobotFrameworkTest1.TestSuite6.TestCase0002
三、Click Element
Click Element关键字用于模拟点击一个经过locator定位到的具体元素,能够是经过id或者name,xpath等均可以。该关键字接收一个参数[ locator ]
示例1:这里咱们继续访问百度的首页,经过id来定位一个元素,而且使用Click Element关键字来模拟点击这个元素定位到的按钮,以下图中所示。
Open Browser http://www.baidu.com chrome
Click Element id=su
Sleep 2
Close Browser
执行结果以下:
Starting test: RobotFrameworkTest1.TestSuite6.TestCase0003
20180728 09:59:02.582 : INFO : Opening browser 'chrome' to base url 'http://www.baidu.com'
20180728 09:59:14.272 : INFO : Clicking element 'id=su'.
20180728 09:59:17.158 : INFO : Slept 2 seconds
Ending test: RobotFrameworkTest1.TestSuite6.TestCase0003
四、Click Link
Click Link关键字用于模拟点击一个连接 。该关键字接收一个参数[ locator ]
示例1:这里咱们继续访问百度的首页,经过模拟点击百度首页又上角的”地图”连接来讲明此关键字的使用。咱们经过href="http://map.baidu.com" 来模拟点击这个连接,以下图中所示。
Open Browser http://www.baidu.com chrome
Click Link http://map.baidu.com
Sleep 2
Close Browser
执行结果以下:
Starting test: RobotFrameworkTest1.TestSuite6.TestCase0004
20180728 10:10:37.328 : INFO : Opening browser 'chrome' to base url 'http://www.baidu.com'
20180728 10:10:47.171 : INFO : Clicking link 'http://map.baidu.com'.
20180728 10:10:53.170 : INFO : Slept 2 seconds
Ending test: RobotFrameworkTest1.TestSuite6.TestCase0004
示例2:Click Link关键字除了上面说到的直接经过href连接来定位元素外,也能够经过id或者name来定位,这里以name做为示例来进行示例。
Open Browser http://www.baidu.com
Click Link name=tj_trmap
Sleep 5
Close Browser
执行结果以下:
Starting test: RobotFrameworkTest1.TestSuite6.TestCase0005
20180728 10:22:35.467 : INFO : Opening browser 'chrome' to base url 'http://www.baidu.com'
20180728 10:22:44.921 : INFO : Clicking link 'name=tj_trmap'.
20180728 10:22:57.497 : INFO : Slept 5 seconds
Ending test: RobotFrameworkTest1.TestSuite6.TestCase0005
运行时能够看到正在加载百度地图的画面,以下图中所示。
五、Add Cookie,Get Cookies 和Delete Cookie
Add Cookie关键字用于模拟向本地浏览器中添加一个Cookie缓存,Cookie也是咱们在作web自动化测试时,常常须要用到的一个概念。该关键字接收[ name | value | path=None | domain=None | secure=None | expiry=None ]这几个参数,以下表所示。
name |
Cookie的名称 |
Value |
Cookie的具体值 |
path |
Cookie对应的路径,若是不填的话,默认为None |
domain |
Cookie对应的域名,若是不填的话,默认为None |
secure |
Cookie的安全属性,这个属性是用来保证cookie的安全的,若是一个cookie被设置了Secure=true,那么这个cookie只能用https协议发送给服务器,用http协议是不发送的。 |
expiry |
Cookie的过时时间,若是不填的话,默认为空 |
这里我以登陆到个人博客园后,浏览器中显示的cookie为示例,经过下图中所示。能够看到上面表格中对应的字段均可以在浏览器中的cookie中看到。
Get Cookie关键字用于获取浏览器中缓存的全部Cookie,这个关键字后面不须要加任何的参数。
Delete Cookie关键字用于删除浏览器中缓存的Cookie,该关键字接收一个参数[ name ],该参数用于标志须要删除的cookie的名称。
示例1:这里咱们以访问百度首页为例,咱们本身添加一个名称为book的cookie,而且将该cookie的值写为Robot Framework,secure属性设置为true,而后经过Get Cookies 关键字来获取全部的Cookie,而后删除咱们本身添加的Cookie。
Open Browser http://www.baidu.com chrome
Add Cookie book Robot Framework / baidu.com true
${cookie} Get Cookies
log ${cookie}
Sleep 50
Delete Cookie book
${cookienew} Get Cookies
log ${cookienew}
Sleep 2
Close Browser
运行结果以下:
Starting test: RobotFrameworkTest1.TestSuite6.TestCase0006
20180728 11:02:14.076 : INFO : Opening browser 'chrome' to base url 'http://www.baidu.com'
20180728 11:02:24.488 : INFO : ${cookie} = H_PS_PSSID=26523_1443_26433_21112_26924_20930; BAIDUID=53A9ECC2223045BB4D28064D8CCC2428:FG=1; PSTM=1532746930; BIDUPSID=53A9ECC2223045BB4D28064D8CCC2428; delPer=0; BD_HOME=0; BD_UPN=12314353; book= Robot Framework
20180728 11:02:24.489 : INFO : H_PS_PSSID=26523_1443_26433_21112_26924_20930; BAIDUID=53A9ECC2223045BB4D28064D8CCC2428:FG=1; PSTM=1532746930; BIDUPSID=53A9ECC2223045BB4D28064D8CCC2428; delPer=0; BD_HOME=0; BD_UPN=12314353; book=Robot Framework
20180728 11:03:14.490 : INFO : Slept 50 seconds
20180728 11:03:15.772 : INFO : ${cookienew} = H_PS_PSSID=26523_1443_26433_21112_26924_20930; BAIDUID=53A9ECC2223045BB4D28064D8CCC2428:FG=1; PSTM=1532746930; BIDUPSID=53A9ECC2223045BB4D28064D8CCC2428; delPer=0; BD_HOME=0; BD_UPN=12314353
20180728 11:03:15.773 : INFO : H_PS_PSSID=26523_1443_26433_21112_26924_20930; BAIDUID=53A9ECC2223045BB4D28064D8CCC2428:FG=1; PSTM=1532746930; BIDUPSID=53A9ECC2223045BB4D28064D8CCC2428; delPer=0; BD_HOME=0; BD_UPN=12314353
20180728 11:03:17.775 : INFO : Slept 2 seconds
Ending test: RobotFrameworkTest1.TestSuite6.TestCase0006
从运行的日志结果看,经过Add Cookie book Robot Framework / baidu.com true,能够添加一个Cookie,而且能够将该Cookie的secure属性设置为true。在运行的过程,经过浏览器自带的开发者工具,也能够看到名称叫book的cookie已经成功添加完成,以下图中所示。
在使用Get Cookies关键字时,能够获取到浏览器打开后里面全部的cookie,除了获取到这里咱们本身添加的cookie外,还获取到了访问百度首页时,百度首页在本地浏览器中保存的cookie。最后经过Delete Cookie关键字删除名称为book的cookie后,咱们再经过Get Cookies关键字来获取全部的cookie时,就已经不能再获取到名称为book的cookie信息了。
六、Get All Links
Get All Links 关键字用来获取全部页面上全部的href连接的元素对应的id,连接对应的元素中没有id时,就以一个空字符串代替。
示例1:咱们继续访问百度,找出百度首页中存在多少个连接数
Open Browser http://www.baidu.com/ chrome
${links} Get All Links
log ${links}
Sleep 2
Close Browser
运行结果以下:
Starting test: RobotFrameworkTest1.TestSuite6.TestCase0007
20180728 11:31:18.136 : INFO : Opening browser 'chrome' to base url 'http://www.baidu.com/'
20180728 11:31:28.558 : INFO : get_attribute id
20180728 11:31:28.566 : INFO : get_attribute id
20180728 11:31:28.574 : INFO : get_attribute id
20180728 11:31:28.582 : INFO : get_attribute id
20180728 11:31:28.592 : INFO : get_attribute id
20180728 11:31:28.599 : INFO : get_attribute id
20180728 11:31:28.607 : INFO : get_attribute id
20180728 11:31:28.617 : INFO : get_attribute id
20180728 11:31:28.624 : INFO : get_attribute id
20180728 11:31:28.633 : INFO : get_attribute id
20180728 11:31:28.640 : INFO : get_attribute id
20180728 11:31:28.648 : INFO : get_attribute id
20180728 11:31:28.657 : INFO : get_attribute id
20180728 11:31:28.664 : INFO : get_attribute id
20180728 11:31:28.673 : INFO : get_attribute id
20180728 11:31:28.682 : INFO : get_attribute id
20180728 11:31:28.690 : INFO : get_attribute id
20180728 11:31:28.699 : INFO : get_attribute id
20180728 11:31:28.706 : INFO : get_attribute id
20180728 11:31:28.716 : INFO : get_attribute id
20180728 11:31:28.723 : INFO : get_attribute id
20180728 11:31:28.732 : INFO : get_attribute id
20180728 11:31:28.740 : INFO : get_attribute id
20180728 11:31:28.747 : INFO : get_attribute id
20180728 11:31:28.756 : INFO : get_attribute id
20180728 11:31:28.764 : INFO : get_attribute id
20180728 11:31:28.775 : INFO : get_attribute id
20180728 11:31:28.782 : INFO : get_attribute id
20180728 11:31:28.790 : INFO : get_attribute id
20180728 11:31:28.798 : INFO : get_attribute id
20180728 11:31:28.806 : INFO : get_attribute id
20180728 11:31:28.814 : INFO : get_attribute id
20180728 11:31:28.822 : INFO : get_attribute id
20180728 11:31:28.831 : INFO : ${links} = [u'result_logo', u'quickdelete', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'setf', u'', u'', u'', u'', u'', u'jgwab']
20180728 11:31:28.833 : INFO : [u'result_logo', u'quickdelete', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'', u'setf', u'', u'', u'', u'', u'', u'jgwab']
20180728 11:31:30.833 : INFO : Slept 2 seconds
Ending test: RobotFrameworkTest1.TestSuite6.TestCase0007
七、Choose File(文件上传)
作自动化测试时,咱们常常遇到的就是上传文件了,这里咱们可使用Choose File 关键字就能够完成该操做,Choose File 关键字接收[ locator | file_path ]两个关键字,以下表5-1-3所示。
locator |
上传文件时,上传文件对应的输入框的输入字段,能够经过咱们常见的元素定位的方式来定位到。 |
file_path |
这个参数指的是须要上传的文件的本地路径 |
表5-1-3
示例1:这里咱们仍是以百度首页为例,百度首页支持图片搜素,不少常用百度引擎进行搜索的朋友可能都用过,有点相似经过输入一张图片,而后找和这张图片的类似图片功能同样,在这个AI人工智能大热的时代,这个功能也愈来愈被不少电商进行商品搜索时使用。
以下的示例中,咱们首先打开百度首页。而后经过咱们上面介绍到的Click Element关键字来模拟点击输入框旁边的按钮,来切换到图片上传模式。切换完后,而后经过Choose File关键字来上传文件,这里咱们的locator选择使用xpath来定位。以后就是选择我磁盘中的一张我的图片上传。
在获取xpath路径时,咱们能够经过Chrom浏览器自带的开发者工具来直接复制到xpath路径,以下图中所示。
Open Browser http://www.baidu.com/ chrome
Click Element //*[@id="form"]/span[1]/span
Sleep 10
Choose File //*[@id="form"]/div/div[2]/div[2]/input E:\\zhangyongqing.bmp
Sleep 10
Close Browser
运行结果以下(这里的运行结果,咱们选择从自动化执行report中来查看):
SUITE RobotFrameworkTest1
javascript:expandAll('s1')javascript:collapseAll('s1')C:\Users\yongqing\AppData\Local\Temp\RIDExpjcyt.d\log.html - s1#s1
Full Name: |
RobotFrameworkTest1 |
Source: |
|
Start / End / Elapsed: |
20180728 11:52:36.817 / 20180728 11:53:08.127 / 00:00:31.310 |
Status: |
1 critical test, 1 passed, 0 failed |
00:00:31.284SUITE TestSuite6
javascript:expandAll('s1-s1')javascript:collapseAll('s1-s1')C:\Users\yongqing\AppData\Local\Temp\RIDExpjcyt.d\log.html - s1-s1#s1-s1
Full Name: |
RobotFrameworkTest1.TestSuite6 |
Source: |
F:\project\RobotFrameworkTest1\RobotFrameworkTest1\TestSuite6.txt |
Start / End / Elapsed: |
20180728 11:52:36.841 / 20180728 11:53:08.125 / 00:00:31.284 |
Status: |
1 critical test, 1 passed, 0 failed |
00:00:31.108TEST TestCase0008
javascript:expandAll('s1-s1-t1')javascript:collapseAll('s1-s1-t1')C:\Users\yongqing\AppData\Local\Temp\RIDExpjcyt.d\log.html - s1-s1-t1#s1-s1-t1
Full Name: |
RobotFrameworkTest1.TestSuite6.TestCase0008 |
Start / End / Elapsed: |
20180728 11:52:37.016 / 20180728 11:53:08.124 / 00:00:31.108 |
Status: |
PASS (critical) |
00:00:09.825KEYWORD Selenium2Library . Open Browser http://www.baidu.com/, chrome
javascript:expandAll('s1-s1-t1-k1')javascript:collapseAll('s1-s1-t1-k1')C:\Users\yongqing\AppData\Local\Temp\RIDExpjcyt.d\log.html - s1-s1-t1-k1#s1-s1-t1-k1
Documentation: |
Opens a new browser instance to given URL. |
Start / End / Elapsed: |
20180728 11:52:37.017 / 20180728 11:52:46.842 / 00:00:09.825 |
11:52:37.017 |
INFO |
Opening browser 'chrome' to base url |
|
00:00:00.119KEYWORD Selenium2Library . Click Element //*[@id="form"]/span[1]/span
javascript:expandAll('s1-s1-t1-k2')javascript:collapseAll('s1-s1-t1-k2')C:\Users\yongqing\AppData\Local\Temp\RIDExpjcyt.d\log.html - s1-s1-t1-k2#s1-s1-t1-k2
Documentation: |
Click element identified by `locator`. |
Start / End / Elapsed: |
20180728 11:52:46.842 / 20180728 11:52:46.961 / 00:00:00.119 |
11:52:46.843 |
INFO |
Clicking element '//*[@id="form"]/span[1]/span'. |
|
00:00:10.001KEYWORD BuiltIn . Sleep 10
javascript:expandAll('s1-s1-t1-k3')javascript:collapseAll('s1-s1-t1-k3')C:\Users\yongqing\AppData\Local\Temp\RIDExpjcyt.d\log.html - s1-s1-t1-k3#s1-s1-t1-k3
Documentation: |
Pauses the test executed for the given time. |
Start / End / Elapsed: |
20180728 11:52:46.962 / 20180728 11:52:56.963 / 00:00:10.001 |
11:52:56.962 |
INFO |
Slept 10 seconds |
|
00:00:00.095KEYWORD Selenium2Library . Choose File //*[@id="form"]/div/div[2]/div[2]/input, E:\\zhangyongqing.bmp
javascript:expandAll('s1-s1-t1-k4')javascript:collapseAll('s1-s1-t1-k4')C:\Users\yongqing\AppData\Local\Temp\RIDExpjcyt.d\log.html - s1-s1-t1-k4#s1-s1-t1-k4
Documentation: |
Inputs the `file_path` into file input field found by `locator`. |
Start / End / Elapsed: |
20180728 11:52:56.964 / 20180728 11:52:57.059 / 00:00:00.095 |
00:00:10.002KEYWORD BuiltIn . Sleep 10
javascript:expandAll('s1-s1-t1-k5')javascript:collapseAll('s1-s1-t1-k5')C:\Users\yongqing\AppData\Local\Temp\RIDExpjcyt.d\log.html - s1-s1-t1-k5#s1-s1-t1-k5
Documentation: |
Pauses the test executed for the given time. |
Start / End / Elapsed: |
20180728 11:52:57.060 / 20180728 11:53:07.062 / 00:00:10.002 |
11:53:07.061 |
INFO |
Slept 10 seconds |
|
00:00:01.061KEYWORD Selenium2Library . Close Browser
javascript:expandAll('s1-s1-t1-k6')javascript:collapseAll('s1-s1-t1-k6')C:\Users\yongqing\AppData\Local\Temp\RIDExpjcyt.d\log.html - s1-s1-t1-k6#s1-s1-t1-k6
Documentation: |
Closes the current browser. |
Start / End / Elapsed: |
20180728 11:53:07.063 / 20180728 11:53:08.124 / 00:00:01.061 |
为了能看到整个的过程,我捕获了运行过程当中关键步骤执行时的实际效果图片,从图片中也能够清晰的看到图片从上传到上传后,百度引擎自动执行搜索的一个过程,以下图所示
八、Get Text
Get Text关键字用来获取文本内容,该关键字接收[ locator ]这一个关键字,locator能够是经过id或者name,xpath等均可以定位。
示例1:
这里咱们依然以百度首页为例,获取name="tj_trnews" 包含的文本内容,以下图所示。
Open Browser http://www.baidu.com/ chrome
${text} Get Text name=tj_trnews
log ${text}
Close Browser
运行结果以下:
Starting test: RobotFrameworkTest1.TestSuite6.TestCase0009
20180728 13:04:33.505 : INFO : Opening browser 'chrome' to base url 'http://www.baidu.com/'
20180728 13:04:42.409 : INFO : ${text} = 新闻
20180728 13:04:42.411 : INFO : 新闻
Ending test: RobotFrameworkTest1.TestSuite6.TestCase0009
示例2:上面的示例中,咱们的locator是经过的name来定位的,咱们换成是xpath来试试。
Open Browser http://www.baidu.com/ chrome
${text} Get Text //*[@id="u1"]/a[1]
log ${text}
Close Browser
运行结果以下(此次的运行结果,咱们选择从自动化执行report中来查看):以下图所示。
咱们会发现使用xpath的效果是同样的。
九、Get Title
Get Title关键字用来获取浏览器网页的title,该关键字后面不须要接收任何的参数。
示例1:这里咱们模拟访问百度首页,而后获取百度首页的Title
Open Browser http://www.baidu.com/ chrome
${title} Get Title
log ${title}
Close Browser
运行结果以下:
Starting test: RobotFrameworkTest1.TestSuite6.TestCase0011
20180728 13:18:33.227 : INFO : Opening browser 'chrome' to base url 'http://www.baidu.com/'
20180728 13:18:42.213 : INFO : ${title} = 百度一下,你就知道
20180728 13:18:42.214 : INFO : 百度一下,你就知道
Ending test: RobotFrameworkTest1.TestSuite6.TestCase0011
未完待续....
备注:本文内容摘选自Robot Framework自动化测试框架核心指南 一书。
Robot Framework自动化测试框架核心指南京东官方购买
Robot Framework自动化测试框架核心指南电子版试读
Robot Framework自动化测试框架核心指南天猫官方旗舰店购买
Robot Framework自动化测试框架核心指南当当网购买
Robot Framework自动化测试框架核心指南 做者签名版本购买
相关博文汇总:
RobotFramework下的http接口自动化Create Http Context关键字的使用
RobotFramework下的http接口自动化Get关键字的使用
RobotFramework下的http接口自动化post关键字的使用
RobotFramework下的http接口自动化Get Response Body关键字的使用
RobotFramework下的http接口自动化Get Response Status 关键字的使用
RobotFramework下的http接口自动化Get Response header 关键字的使用
RobotFramework下的http接口自动化Set Request Header 关键字的使用
RobotFramework下HttpLibrary库其它关键字
RobotFramework下的http接口自动化Set Request Body 关键字的使用
RobotFramework下的http接口自动化Follow Response关键字的使用
RobotFramework自动化测试框架的基础关键字(一)
RobotFramework自动化测试框架的基础关键字(二)
RobotFramework自动化测试框架的基础关键字(三)
RobotFramework自动化测试框架的基础关键字(四)
RobotFramework自动化测试框架的基础关键字(五)
RobotFramework自动化测试框架-移动手机自动化测试AppiumLibrary介绍
RobotFramework自动化测试框架-移动手机自动化测试Open Application关键字的使用
RobotFramework自动化测试框架-经常使用断言关键字
RobotFramework自动化测试框架-移动手机自动化测试AppiumLibrary库其它的常见自动化关键字
RobotFramework自动化测试框架-移动手机自动化测试Input Text和Click Button关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Clear Text关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Click Element关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Click A Point关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Click Element At Coordinates关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Get Element Location关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Get Network Connection Status和Set Network Connection Status关键字的使用
RobotFramework自动化测试框架-移动手机自动化测试Element Attribute Should Match关键字的使用
RobotFramework自动化测试框架-DatabaseLibrary库的使用(对数据库的操做)
RobotFramework自动化测试框架-使用Python编写自定义的RobotFramework Lib
RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser
RobotFramework自动化测试框架-MongoDBLibrary库的使用
原文出处:https://www.cnblogs.com/laoqing/p/11831022.html