自动化测试框架:
安装两个包
pip install robotframework
pip install --upgrade robotframework-seleniumlibrary
入门代码:
文件为.robot形式
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
打开百度
Open Browser url=https://www.baidu.com/ browser=chrome
Input Text xpath://*[@id="kw"] helloworld
在命令中是使用 robot 命令执行
robot .\demo.robot
编写测试:
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
正确输入用户名和信息
Open Browser url=http://localhost/ciircrm browser=chrome
Input Text name:name admin
Input Password name:password admin
Click Button name:submit
关键字解读:
1.引用SeleniunLibrary库时初始化参数:
[timeout=5.0,implicit wait=0.0,run on failure=Capture Page Screenshot,screenshot root directory=None]
参数 | 作用 |
---|---|
Timeout | 等待时间(默认值:5秒) |
run on failure | 失败自动截图 |
Screenshot root directory | 截取的网页图片存放路径 (None表示不指定路径 ,默认与输出文件同目录) |
2.元素定位
定位语法:
以百度为例
1、定位策略:定位表达式(id:kw)
2、定位策略=定位表示的是(id=kw)
八大定位方法:
id、name、link_text、partial_link_text、xpath、css、class_name、tag_name(标签名)
定位策略 | 匹配方式 | 定位示例 |
---|---|---|
id | id属性 | id:kw |
name | name属性 | name:kw |
identifier | id或者name属性 | identifier:kw |
class | class属性 | class:kw |
tag | 元素标签名 | tag:div |
xpath | xpath定位表达式 | xpath://div[@id=“kw”] |
css | css表达式 | css:div#kw |
dom | dom表达式 | dom:document.images[1] |
link | 精确匹配链接元素文本信息 | link:新闻 |
partial link | 部分匹配链接元素文本信息 | partial link:新 |
jquery | jQuery表达式D | jquery:div.kw |
3.浏览器和窗口操作关键字
关键字名称 | 关键字说明 |
---|---|
open browser | 打开浏览器并访问系统地址(url:网站地址,browser:浏览器类型) |
close browse | 关闭浏览器 |
maximize browser window | 当前窗口最大化 |
get window size | 获取当前窗口的大小 |
set window size | 设置窗口大小 |
get window handles | 获取浏览器中,所有窗口的句柄 |
switch window | 切换窗口 |
get window names | 获取浏览器,所有窗口的名称 |
get window titles | 获取所有窗口的标题 |
get locations | 获取所有窗口的url |
4、元素通用操作关键字
关键字名称 | 关键字说明 |
---|---|
click ement | 点击元素 |
input text | 在元素中输入文本值 |
get element attribute | 获取元素的某一个属性值 |
get element size | 获取元素的大小 |
get value | 获取元素的value属性值 |
get text | 获取元素的文本内容 |
clear element text | 清除元素的文本值 |
get webelement | 获取一个元素对象(WebElment对象) |
get webelements | 获取匹配的所有元素对象(WebElment对象) |
set focus to element | 元素获取焦点 |
double click element | 双击元素 |
scroll element into view | 滚动元素到可见区域 |
drag and drop | 将一个元素拖拽到另一个元素区域中 |
mouse over | 鼠标悬浮在元素上 |
press keys | 键盘按键操作 |
5、select/frame/alert/表格等操作关键字
关键字名称 | 关键字说明 |
---|---|
get list items | 获取所有的options选项 |
select from list by index | 根据下标来选择option选项 |
select from list by value | 根据value属性来选择option选项 |
select from list by label | 根据文本内容来选择option选项 |
select frame | 切换到指定的iframe当中 |
unselect frame | 退出iframe,切换到默认的html页面中 |
handle alert | 关闭alert弹出框 |
input text into alert | 输入文本到alert弹框中,并关闭alert弹出框 |
choose file | 在上传文件的输入框中(input元素的type为file)输入文本地址 |
get table cell | 获取表格的单元格值。行号和列号起始值为1.包含表头和表尾所对应的行 |
6、元素等待关键字
默认为5s
关键字名称 | 关键字说明 |
---|---|
wait for condition | 等待条件成立:条件为js表达式,表达式的结果要为布尔值 |
wait until element is visible | 等待指定的元素可见 |
wait until element is not visible | 等待指定的元素不可见 |
wait until element is enabled | 等待指定的元素可用 |
wait until element contains | 等待指定的元素 包含 指定的文本内容 |
wait until element does not contain | 等待指定的元素 不包含 指定的文本内容 |
wait until page contains element | 等待页面 包含指定的元素 |
wait until page contains element | 等待页面 不包含指定的元素 |
wait until page contains | 等待页面 包含指定的文本内容 |
wait until page does not contain | 等待页面 不包含指定的文本内容 |
7、断言关键字:
关键字名称 | 关键字说明 |
---|---|
page should contain element | 页面应当 包含指定的元素 |
page should not contain element | 页面应当 不包含指定的元素 |
locator should match x times | 元素定位表达式应该匹配 指定 次数 |
element should be visible | 指定的元素 应当可见 |
element should not be visible | 指定的元素 应当不可见 |
element should be enabled | 指定的元素 应当可用 |
element should be disabled | 指定的元素 应当不可用 |
element text should be | 指定元素的文本内容 应当是 指定内容 |
element text should not be | 指定元素的文本内容 应当不是 指定内容 |
element should be focused | 指定的元素 应当为焦点状态 |
8、截屏关键字:
关键字名称 | 关键字说明 |
---|---|
capture page screenshot | 截取当前页面图片 |
capture element screenshot | 截取指定元素的图片 |
set screenshot directory | 设置截图存储目录 |
9.补充说明
关键字名称 | 关键字说明 |
---|---|
Capture Element Screenshot Web | 元素截图并插入日志报告中 |
Checkbox Should Be Selected | 检查复选框选中 |
Checkbox Should Not Be Selected | 检查复选框未选中 |
Click Button | 按钮点击 |
Click Image | 单击图片 |
Close All Browsers | 关闭所以浏览器 |
Close Window | 关闭窗口 |
Confirm Action | 确认操作 |
Get Alert Message | 获取警报消息 |
Input Password | 输入密码 |
Reload Page | 重新加载页面 |
Switch Browser | 切换浏览器 |
模拟动作
登录页面并且添加用户信息
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
正确输入用户名和信息
Open Browser url=http://localhost/ciircrm browser=chrome
Input Text name:name admin
Input Password name:password admin
Click Button name:submit
添加用户
Click Element link:客户
Click Element link:新建客户
Input Text id:name 徐凤年
Click Button xpath://*[@id="form1"]/table/tfoot/tr/td/input[1]
使用变量
在本模板中使用${}的方式来设置和引用变量
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${url} http://localhost/ciircrm
${username} admin
${password} admin
${addname} 王维
*** Test Cases ***
正确输入用户名和信息
Open Browser url=${url} browser=chrome
Input Text name:name ${username}
Input Password name:password ${password}
Click Button name:submit
添加用户
Click Element link:客户
Click Element link:新建客户
Input Text id:name ${addname}
Click Button xpath://*[@id="form1"]/table/tfoot/tr/td/input[1]
自定义关键字
1、创建自定义关键字
在robot中可以将常用的操作放到关键字中去
主要语法
keywords
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${url} http://localhost/ciircrm
${username} admin
${password} admin
${addname} 柳宗元
*** Keywords ***
正确登录页面
Open Browser url=${url} browser=chrome
Input Text name:name ${username}
Input Password name:password ${password}
Click Button name:submit
*** Test Cases ***
正确输入用户名和信息
Open Browser url=${url} browser=chrome
Input Text name:name ${username}
Input Password name:password ${password}
Click Button name:submit
添加用户
正确登录页面
Click Element link:客户
Click Element link:新建客户
Input Text id:name ${addname}
Click Button xpath://*[@id="form1"]/table/tfoot/tr/td/input[1]
2、创建带有参数的自定义关键字:
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${url} http://localhost/ciircrm
${username} admin
${password} admin
${addname} 柳宗元
${title} 客户
${button} 新建客户
*** Keywords ***
正确登录页面
Open Browser url=${url} browser=chrome
Input Text name:name ${username}
Input Password name:password ${password}
Click Button name:submit
添加相关客户信息
[Arguments] ${title} ${button} ${addname}
Click Element link:${title}
Click Element link:${button}
Input Text id:name ${addname}
Click Button xpath://*[@id="form1"]/table/tfoot/tr/td/input[1]
*** Test Cases ***
正确输入用户名和信息
Open Browser url=${url} browser=chrome
Input Text name:name ${username}
Input Password name:password ${password}
Click Button name:submit
添加用户
正确登录页面
添加相关客户信息 ${title} ${button} ${addname}
创建resource文件
useraction.resource
*** Settings ***
Documentation 用户注册登陆关键字
Library SeleniumLibrary
*** Variables ***
${url} http://localhost/ciircrm
${username} admin
${password} admin
*** Keywords ***
正确登录页面
Open Browser url=${url} browser=chrome
Input Text name:name ${username}
Input Password name:password ${password}
Click Button name:submit
添加相关客户信息
[Arguments] ${title} ${button} ${addname}
Click Element link:${title}
Click Element link:${button}
Input Text id:name ${addname}
Click Button xpath://*[@id="form1"]/table/tfoot/tr/td/input[1]
校验成功信息
[Arguments] ${massage}
Element Text Should Be locator=//div[contains(@class,'alert') and contains(@class,'alert-success')] expected=${massage}
*** Settings ***
Library SeleniumLibrary
Resource ./keywords/useraction.resource
*** Variables ***
${url} http://localhost/ciircrm
${username} admin
${password} admin
${addname} 王致和
${title} 客户
${button} 新建客户
*** Test Cases ***
正确输入用户名和信息
Open Browser url=${url} browser=chrome
Input Text name:name ${username}
Input Password name:password ${password}
Click Button name:submit
Close All Browsers
添加用户
正确登录页面
添加相关客户信息 ${title} ${button} ${addname}
校验成功信息 $massage = × 添加客户成功
Close All Browsers
执行脚手架
● Suite Setup 整个测试套件执行之前的操作
● Suite Teardown 整个测试套件执行之后的操作
● Test Setup 每个测试用例执行之前的操作
● Test Teardown 每个测试用例 执行之后的操作
resource文件
*** Settings ***
Documentation 用户注册登陆关键字
Library SeleniumLibrary
*** Variables ***
${url} http://localhost/ciircrm
${username} admin
${password} admin
*** Keywords ***
添加相关客户信息
[Arguments] ${title} ${button} ${addname}
Click Element link:${title}
Click Element link:${button}
Input Text id:name ${addname}
Click Button xpath://*[@id="form1"]/table/tfoot/tr/td/input[1]
校验成功信息
[Arguments] ${massage}
Element Text Should Be locator=//div[contains(@class,'alert') and contains(@class,'alert-success')] expected=${massage}
关闭浏览器
Close All Browsers
屏幕截图
Capture Page Screenshot
打开浏览器并导航到网页
Open Browser url=${url} browser=chrome
Input Text name:name ${username}
Input Password name:password ${password}
Click Button name:submit
*** Settings ***
Library SeleniumLibrary
Resource ./keywords/useraction.resource
Suite Setup 打开浏览器并导航到网页
Suite Teardown 关闭浏览器
Test Setup 屏幕截图
Test Teardown 屏幕截图
*** Variables ***
${url} http://localhost/ciircrm
${username} admin
${password} admin
${addname} 高俅
${title} 客户
${button} 新建客户
*** Test Cases ***
添加用户
添加相关客户信息 ${title} ${button} ${addname}
校验成功信息 $massage = × 添加客户成功
Close All Browsers
使用python定义关键字
.py
import os
import time
class CustomerLib:
def get_screenshots_path(self):
root_dir = os.path.dirname(os.path.dirname(__file__))
screenshots = os.path.join(root_dir, "screenshots")
if not os.path.exists(screenshots):
os.mkdir(screenshots)
y_m = time.strftime("%Y_%m")
ym_dir = os.path.join(screenshots, y_m)
if not os.path.exists(ym_dir):
os.mkdir(ym_dir)
return ym_dir
if __name__ == '__main__':
cm = CustomerLib()
dir = cm.get_screenshots_path()
print(dir)
.resource
*** Settings ***
Documentation 用户注册登陆关键字
Library SeleniumLibrary
Library ../lib/CustomerLib.py
Library ../lib/massage.py
*** Variables ***
${url} http://localhost/ciircrm
${username} admin
${password} admin
*** Keywords ***
添加相关客户信息
[Arguments] ${title} ${button} ${addname}
Click Element link:${title}
Click Element link:${button}
Input Text id:name ${addname}
Click Button xpath://*[@id="form1"]/table/tfoot/tr/td/input[1]
校验成功信息
[Arguments] ${massage}
Element Text Should Be locator=//div[contains(@class,'alert') and contains(@class,'alert-success')] expected=${massage}
关闭浏览器
Close All Browsers
屏幕截图
${pngdir}= Get Screenshots Path
Set Screenshot Directory path=${pngdir}
Capture Page Screenshot
打开浏览器并导航到网页
Open Browser url=${url} browser=chrome
Input Text name:name ${username}
Input Password name:password ${password}
Click Button name:submit
.robot
*** Settings ***
Library SeleniumLibrary
Resource ./keywords/useraction.resource
Library ./lib/massage.py
Suite Setup 打开浏览器并导航到网页
Suite Teardown 关闭浏览器
Test Setup 屏幕截图
Test Teardown 屏幕截图
*** Variables ***
${url} http://localhost/ciircrm
${username} admin
${password} admin
${addname} 康有为
${title} 客户
${button} 新建客户
*** Test Cases ***
添加用户
添加相关客户信息 ${title} ${button} ${addname}
校验成功信息 $massage = '添加客户成功'
Log $massage
Close All Browsers