Robot Framework做UI自动化测试

Selenium2Library库安装与配置

selenium是一款用于Web应用程序测试的工具,它支持多平台、多语言、多浏览器去实现自动化测试。
针对robot framework的库有两个:SeleniumLibrary和Selenium2Library。SeleniumLibrary是针对Selenium1.0开发的,Selenium2Library是针对Selenium2.0开发的。我们直接安装Selenium2Library即可。

Selenium2Library库安装:
安装方式一:pip install robotframework-selenium2library==3.0.0 联网安装
pip install --upgrade robotframework-selenium2library --升级
pip uninstall robotframework-selenium2library --卸载

安装方式二:压缩包下载:下载地址https://pypi.python.org/pypi/robotframework-selenium2library然后解压,通过python setup.py install 安装

webdriver安装:
Windows操作系统把对应浏览器的driver.exe文件放置到放到/python27/scripts目录下即可。

浏览器操作API

Selenium2Library库中的关键字可以通过按F5,然后选择Source下拉框中的Selenium2Library库,即可查看所有Selenium2Library的关键字和帮助信息。

常用的关键字如下:
open browser:打开浏览器


浏览器对应的关键字:
谷歌浏览器:chrome googlechrome gc
火狐浏览器:firefox ff
IE浏览器:ie internetexplorer

close browser:关闭当前浏览器

close all browsers:关闭所有浏览器和缓存重置

maximize browser window:浏览器最大化

set window size :设置浏览器宽、高

get window size :获取浏览器宽、高


go back :浏览器进行回退操作

reload page:页面重新加载,即页面刷新操作

get title:获取当前浏览器窗口的标题

get location:获取当前URL

元素识别工具与定位API

元素识别工具:

Firebug
Firebug是网页浏览器 Mozilla Firefox下的一款开发类插件,它集HTML查看和编辑、Javascript控制台、网络状况监视器于一体,是开发 JavaScript、CSS、HTML和Ajax的得力助手。
安装Firebug:
Mozilla Firefox菜单–附加组件–插件–搜索Firebug–安装–重启浏览器

chrome和IE的开发者工具
chrome 浏览器自带开发者工具,浏览器右上的小扳手,在下拉菜单中选择“工具”–“开发者工具” 即可打开,也可以使用快捷键Ctrl+Shift+I或者F12.

IE浏览器从IE8版本开始,加入了开发人员工具,通过菜单栏“工具”–“开发人员工具”或者通过快捷键F12即可打开。

元素定位API:
Selenium2Library提供了非常丰富的元素定位器,如下所示:


示例:
用户名文本框


百度新闻链接
新闻

1.通过id定位对象:在这里插入图片描述
2.通过name定位对象:


3.通过link定位对象:

xpath定位:
xpath是一种在XML文档中定位元素的语言。因为HTML可以看作是XML的一种形式,selenium可使用这种强大语言在web应用中定位元素。Xpath有7种定位元素的方式:
1、通过绝对路径做定位
XPath的开头是一个斜线(/)代表这是绝对路径。
/html/body/div[3]/div[1]/div/div[3]/a[2]

2、通过相对路径做定位
如果开头是两个斜线(//)表示文件中所有符合模式的元素都会被选出来,即使是处于树中不同的层级也会被选出来。
//div[1]/div/div[3]/a

3、通过元素索引定位 ,索引的初始值为1
//div[3]/a[2] 定位文件中第2个a对象

4、使用属性定位
//a[@name=‘tj_trnews’]
//a[@name=‘tj_trnews’ and @class=‘mnav’]
//a[@name=‘tj_trnews’ or @class=‘mnav’]

5、使用部分属性值匹配
starts-with()
//a[starts-with(@name,‘tj_trnews’)]
ends-with()(XPath1.0中没有ends-with函数,2.0有,现在浏览器实现的都是1.0)
可以用如下代替:
//a[substring(@name,string-length(@name)-5)=‘trnews’]
contains()
//a[contains(@name,‘trnews’)]

6、使用任意属性值匹配元素
//[@=‘tj_trnews’]

7、使用xpath的text函数
//a[text()=‘新闻’]
//a[contians(text(),‘新闻’)]")) 包含(模糊)匹配

CssSelector定位:
CSS locator比XPath locator速度快,特别是在IE下面(IE没有自己的XPath 解析器(Parser))他比xpath更高效更准确更易编写,但根据页面文字时略有缺陷没有xpath直接。CssSelector有6种定位元素的方式:

1、使用绝对路径来定位元素。CSS绝对路径指的是在DOM结构中具体的位置,使用绝对路径来定位用户名输入字段,在使用绝对路径的时候,每个元素之间要有一个空格。
html body div div div div form span input
这种策略有一定的局限性,如果界面的布局改变了,那么可能就定位不到我们想要的元素了

2、 使用相对路径来定位元素
当使用CSS选择器来查找元素的时候,我们可以使用class属性来定位元素,我们可以先指定一个HTML的标签,然后加上一个”.”符合,跟上class属性的值
div a.mnav

3、定位下个节点:
div a.mnav + a
.mnav 找界面所有className为mnav的元素

4、列表选择具体的匹配
Selenium中的CSS选择器允许我们更细致的浏览列表下的元素,如图,我想选择第三行链接,可以用nth-of-type或者nth-child
div a[class=‘mnav’]:nth-of-type(3)
div a[class=‘mnav’]:nth-child(3)
在这里插入图片描述
5、 使用相对ID选择器来定位元素
可以使用元素的ID来定位元素,先指定一个HTML标签,然后加上一个”#”符号,跟上id的属性值
input#kw #kw
这种方法也是会找界面所有id=kw的元素,不一定能定位到我们要的元素上

6 、使用属性值选择器来定位元素
通过指定元素中属性值来定位元素
单属性:a[name=‘tj_trnews’]
多属性:a[name=‘tj_trnews’][class=‘mnav’]

7、部分属性值的匹配
CSS选择器提供了一个部分属性值匹配定位元素的方法,这为了测试那些页面上具有动态变化的属性的元素是非常有用的,例如界面技术EXTJS的id,className是动态变化的。
匹配前缀:^= 匹配后缀:$=
匹配字符串:*=
a[name^=‘tj_’][class=‘mnav’]

常用CSS定位语法如下:

在这里插入图片描述

元素操作API

input text:输入文本
click button/click element:点击按钮/点击元素
sumbit form: 表单提交,要求对象必须是表单,或者为空
clear element text:清空元素内容


get text:获取元素文本内容
get element attribute : 获取元素属性
get element size:获取元素尺寸

设置等待相关API

为了保证脚本的稳定性,有时候需要引入等待时间,等待页面加载元素后再进行操作,robot framework提供多种等待时间设置方式。
固定时间等待:
sleep:固定时间等待

隐式等待:可以在一个时间范围内等待,且是识别元素的全局设置。
set browser implicit wait:隐式等待,针对当前浏览器生效
set selenium implicit wait:隐式等待,针对所有打开的浏览器都生效

显示等待:针对单一元素在时间范围内达到条件的等待,也有相应的否定用法
wait until element contains:直到元素包含指定的text才结束等待
wait until element is enabled:直到元素可以使用才结束等待
wait until element is visible:直到元素可见才结束等待

其它等待:也有相应的否定用法
wait until page contains:直到当前页面出现指定的text才结束等待
wait until page contains element:直到当前页面出现指定的元素才结束等待
wait for condition:当满足条件时结束等待,条件是带返回布尔值的js脚本

等待相关API写法示例:

其它操作API

定位frame中的对象:
select frame:定位frame中的对象,进入到frame(表单),参数是id、name属性,或者是xpath识别元素的值。
unselect frame: 退出frame(表单)


原生js弹窗(alert/confirm/prompt)的处理:
handle alert :操作原生弹窗并且可以返回弹窗的消息内容


下拉框处理:
Select From List By Value:通过value属性去选择下拉框的值
Select From List By Index:通过索引去选择下拉框的值,索引从0开始
Select From List By Label:通过可见文本属性去选择下拉框的值


执行Javascript脚本:
当robotframework遇到无法完成的操作时候,这个时候可以使用javascript来完成,robotframework提供了API来调用js代码执行。
Execute JavaScript:执行js脚本


浏览器多窗口处理:
在进行自动化测试过程中,过程中会出现跳转到新窗口继续执行操作的情况,robotframework可以通过如下API处理:
Select window:跳转到指定窗口,参数可以是title、URL、handle、NEW、MAIN
其中NEW为最新打开的窗口、MAIN为回到主窗口
Get window Handles:获取所有窗口的句柄,返回一个list

鼠标键盘事件API

鼠标键盘事件:
Mouse Down:模拟鼠标在指定的元素上按下鼠标左键
Mouse Up:模拟鼠标在指定的元素上释放鼠标左键
Mouse Over:模拟移动鼠标悬停在指定的元素上
Mouse Out:模拟移动鼠标远离指定的元素
Double Click Element:在指定的元素上进行双击操作
Press key:实现在元素上进行按键操作 ,参数可以 是单个字符、字符串、ascii码的值(作为参数需要加上 \)

在这里插入图片描述

断言API

系统断言API:
should Be Empty:判断是否为空,如果是空,断言成功
Should Be Equal:判断是否相等,如果相等,断言成功
Should Be True:判断条件是否为真,如果条件为真,断言成功
Should Contain:判断是否包含,如果包含,断言成功


Should Start With:判断字符串是否以指定的值开头,如果是,断言成功
Should End With:判断字符串是否以指定的值结尾,如果是,断言成功
length Should Be:判断对象的长度是否是指定值,如果是,断言成功
在这里插入图片描述

Selenium断言API:
Page Should Contain:页面是否包含指定的文本内容
Page Should Contain Element:页面是否包含指定的元素,相类似的还有Button、Checkbox、Image、Link、List、Radio Button、Textfield,如下图举例:

在这里插入图片描述
备注:
Element\List\Textfield的元素定位信息必须写完整
其余可以只用写id、name等的值,不需要写定位的属性名
Limit参数表示元素出现的次数,none为默认,表示出现即可;如果是2,必须出现2次
Loglevel表示日志级别,共有4个选项:DEBUG, INFO (default), WARN和 NONE,如果
设置成WARN,只会打印WARN以及该级别以上的信息。

Element Should Contain:元素的text是否包含指定的内容(可以是部分内容)
Element Should Be Visible:判断元素是否可见,相类似的还有Focused(选中)、Enabled(启用)
Alert Should Be Present:是否出现弹出窗
Checkbox Should Be Selected:复选框是否已经被选中

最后:下方这份完整的【自动化测试】学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值