RobotFramework 之 公共变量
RobotFramework 之 公共变量
- 公共变量
- RF公共变量的使用
- list变量
- dict变量
- 使用变量文件
公共变量
前面了解了通过资源文件
对用户关键字进行管理,将重复的内容提取出来,简化测试用例中的操作步骤
common.robot
*** Settings ***
Library SeleniumLibrary*** Keywords ***
登录网易邮箱# 打开chrome浏览器访问163邮箱open browser https://mail.163.com/ chromesleep 5maximize browser window# 切换到iframeselect frame xpath=//iframe[contains(@id,'iframe')]# 用户名输入框中输入 用户名sleep 2input text xpath=//*[@name="email"] 你的用户名sleep 2# 密码输入框中输入 密码input text xpath=//*[@name="password"] 你的密码sleep 2# 点击登录按钮click element xpath=//*[@id="dologin"]sleep 10关闭浏览器close browser
test.robot
*** Settings ***
Library SeleniumLibrary
Resource common.robot
Suite Setup 登录网易邮箱
Suite Teardown 关闭浏览器*** Test Cases ***
用例1log to console 这里是用例主体部分用例2log to console 这里是用例主体部分
而在操作步骤的变量,比如元素定位,可能在这个关键字中会用到,在其他关键字中也会用到,如果这个元素定位发生了改变,就要同时在这几个关键字中去改变,很麻烦。
又比如账号、密码这类数据,不同的账号有着不同的权限,需要用到不同的账号去进行操作。
所以,对于这类数据,可以将其独立出来,也就是公共变量
,起到共享的作用
RF公共变量的使用
公共变量需要在变量表中声明变量,新建一个 公共变量.robot
文件,创建Variables
表,在Variables
表中声明变量
公共变量.robot
*** Variables ***# 元素定位
${网易邮箱地址} https://mail.163.com/
${iframe} xpath=//iframe[contains(@id,'iframe')]
${用户名输入框} xpath=//*[@name="email"]
${密码输入框} xpath=//*[@name="password"]
${登录按钮} xpath=//*[@id="dologin"]# 账号数据
${权限1账号} 用户名1
${权限1密码} 密码1
${权限2账号} 用户名2
${权限2密码} 密码2
然后在common.robot
文件中导入 公共变量.robot
文件:Resource 公共变量.robot
common.robot
*** Settings ***
Library SeleniumLibrary
Resource 公共变量.robot*** Keywords ***登录网易邮箱[Arguments] ${账号}=${权限1账号} ${密码}=${权限1密码}# 打开chrome浏览器访问163邮箱open browser ${网易邮箱地址} chromesleep 5maximize browser window# 切换到iframeselect frame ${iframe}# 用户名输入框中输入 用户名sleep 2input text ${用户名输入框} ${账号}sleep 2# 密码输入框中输入 密码input text ${密码输入框} ${密码}sleep 2# 点击登录按钮click element ${登录按钮}sleep 10关闭浏览器close browser
这样的话,元素定位发生改变,只需要在 公共变量.robot
文件修改即可,默认登录的账号为权限1账号
,如果需要使用其他账号,
在登录网易邮箱
关键字后加上要使用的账号和密码对应的变量即可
test.robot
*** Settings ***
Library SeleniumLibrary
Resource common.robot
Suite Setup 登录网易邮箱 ${权限2账号} ${权限2密码}
Suite Teardown 关闭浏览器*** Test Cases ***
用例1log to console 这里是用例主体部分用例2log to console 这里是用例主体部分
list变量
公共变量.robot
文件中,变量类型还可以为list变量
比如在项目迭代过程中,会有多个测试环境,通过创建一个list变量
,将这些测试环境的地址都放到list变量
里。这里以网易邮箱地址
为例,注意,这里声明变量时变成了@{网易邮箱地址}
公共变量.robot
*** Variables ***# 元素定位
@{网易邮箱地址} https://mail.126.com/ https://mail.163.com/
${iframe} xpath=//iframe[contains(@id,'iframe')]
${用户名输入框} xpath=//*[@name="email"]
${密码输入框} xpath=//*[@name="password"]
${登录按钮} xpath=//*[@id="dologin"]# 账号数据
${权限1账号} 用户名1
${权限1密码} 密码1
${权限2账号} 用户名2
${权限2密码} 密码2
这里要使用 https://mail.163.com/
这个地址,在common.robot
文件中就需要改成 ${网易邮箱地址}[1]
(第二个参数)
common.robot
*** Settings ***
Library SeleniumLibrary
Resource 公共变量.robot*** Keywords ***登录网易邮箱[Arguments] ${账号}=${权限1账号} ${密码}=${权限1密码}# 打开chrome浏览器访问163邮箱open browser ${网易邮箱地址}[1] chromesleep 5maximize browser window# 切换到iframeselect frame ${iframe}# 用户名输入框中输入 用户名sleep 2input text ${用户名输入框} ${账号}sleep 2# 密码输入框中输入 密码input text ${密码输入框} ${密码}sleep 2# 点击登录按钮click element ${登录按钮}sleep 10关闭浏览器close browser
dict变量
公共变量.robot
文件中,变量类型除了可以为list变量
,还可以为dict变量
公共变量.robot
文件中,账号密码可以这样来写
公共变量.robot
*** Variables ***# 元素定位
@{网易邮箱地址} https://mail.126.com/ https://mail.163.com/
${iframe} xpath=//iframe[contains(@id,'iframe')]
${用户名输入框} xpath=//*[@name="email"]
${密码输入框} xpath=//*[@name="password"]
${登录按钮} xpath=//*[@id="dologin"]# 账号数据
&{账号数据} 权限1账号=用户名1 权限1密码=密码1 权限2账号=用户名2 权限2密码=密码2
这里为了举这个例子,就不使用默认参数的方式了,账号内容为${账号数据}[权限1账号]
,对应的是用户名1
,密码内容为${账号数据}[权限1密码]
,对应的是密码1
common.robot
*** Settings ***
Library SeleniumLibrary
Resource 公共变量.robot*** Keywords ***登录网易邮箱# 打开chrome浏览器访问163邮箱open browser ${网易邮箱地址}[1] chromesleep 5maximize browser window# 切换到iframeselect frame ${iframe}# 用户名输入框中输入 用户名sleep 2input text ${用户名输入框} ${账号数据}[权限1账号]sleep 2# 密码输入框中输入 密码input text ${密码输入框} ${账号数据}[权限1密码]sleep 2# 点击登录按钮click element ${登录按钮}sleep 10关闭浏览器close browser
使用变量文件
除了创建 公共变量.robot
文件,创建Variables
表,在Variables
表中声明变量这种方式,还可以使用python模块文件
提供公共变量给RF使用,只需要直接定义变量就可以了,语法完全就是python语法
config.py
url1 = 'https://mail.126.com/'
url2 = 'https://mail.163.com/'
在RF文件中声明使用变量文件:Variables config.py
,直接使用变量$url1
即可
common.robot
*** Settings ***
Library SeleniumLibrary
Resource 公共变量.robot
Variables config.py*** Keywords ***登录网易邮箱# 打开chrome浏览器访问163邮箱open browser $url1 chromesleep 5maximize browser window# 切换到iframeselect frame ${iframe}# 用户名输入框中输入 用户名sleep 2input text ${用户名输入框} ${账号数据}[权限1账号]sleep 2# 密码输入框中输入 密码input text ${密码输入框} ${账号数据}[权限1密码]sleep 2# 点击登录按钮click element ${登录按钮}sleep 10关闭浏览器close browser
RobotFramework 之 公共变量相关推荐
- C#学习笔记-数据的传递(公共变量)以及Dictionary
看的代码越多,写的代码越多,就越是享受这些字符,终于渐渐懂得了那种传闻中的成就感,特别是自己从看不懂然后一步一步学,一个代码一个代码地敲,最后哪怕只是完成了一个小功能,也都是特别自豪的!这种自豪不用告 ...
- python公共变量_Python中的公共变量
python公共变量 By default all numbers, methods, variables of the class are public in the Python programm ...
- protractor测试框架6----报告、公共方法、公共变量
1.报告在protractor.conf.js中配置后会自动生成,保存在如下目录 : 会自动生成html报告,用例执行失败的时候会有截图放在screenshots目录下 2.公共方法,如node.js ...
- 微信小程序 app=getApp()公共变量在页面间传值技巧。
1.公共变量 在开发过程中,避免不了会使用公共变量,记录共享对象状态.数据最简单的方式就是创建创建公共变量: 当业务逻辑变多,还采用这种思想就会变得危险,代码逻辑变得不清晰,慢慢就有一种代码坏味道. ...
- laravel 向模板中添加公共变量
1.在App\Providers\AppServiceProvider 添加 view()->composer('*', //模板名多个可用数组"['blade1', 'blade2' ...
- Spring中采用公共变量并发问题解决
由于系统采用springmvc框架,springmvc核心控制器DispatcherServlet 默认为每个controller生成单一实例来处理所有用户请求,所以在这个单一实例的controlle ...
- python公共变量声明_Python变量声明
繁星coding 好的,首先要做的事情.Python中没有"变量声明"或"变量初始化"这样的东西.简直就是我们所谓的"任务",但应该只是称之 ...
- postma公共变量的设置及使用
在Tests里写这段 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }) ...
- php 如何定义公共变量,php如何定义全局变量
php全局变量用global定义一下就好,就在外面定义global是错的,必须在函数内声明 定义方式:global $variable 讲解:$variable 为变量名,global为全局变量的类型 ...
最新文章
- Opera 60 正式发布,代号 Reborn 3
- python有趣小程序 表白-抖音最火的整蛊表白小程序如何做出来的?教你用python做出...
- 按键抖动仿真Testbench(repeat、task、random)的用法
- PyQt4编程之模态与非模态对话框(一)
- Ubuntu Server 16.04 LTS上给Docker配置镜像加速器
- dell服务器怎么看硬件状态,从DELL 2950和DELL R710看服务器硬件
- 外显子和基因组基本概念(一)
- linux高级命令组合
- DirectX11 With Windows SDK--07 添加光照与常用几何模型、光栅化状态
- Tensorflow(r1.4)API--tf.summary.scalar
- android调weex方法,Android集成weex汇总
- squid 折叠回源解析
- 猿如意|初识CSDN的开发者工具合集
- 捣鼓车间 | 学生获奖作品:戒烟帽
- 五险一金 | 养老保险的认识
- NVIDIA_CUDA版本查看方法_WIN10
- Android实现APK智能安装且安装后自启动,亲测有用!
- JDK、JRE、JVM分别是什么及它们之间的有什么关联
- wireshark域名过滤
- 九蒸九晒熟地黄的功效
热门文章
- [足式机器人]Part2 高等机构学Ch0X-2 空间闭式运动链的自由度公式及计算——【读书笔记】
- KEIL5工程不能编译和下载,运行时提示找不到.axf文件(Error: Flash Download failed - Could not load file“.axf“)
- EasyX图形库基础
- Oracle9i突破内存限制,oracle9i 的内存分配
- 实现纯前端生成字母头像
- 家用计算机调制解调器,Win7电脑提示“找不到调制解调器”怎么办?
- Python Scrapy 爬虫框架爬取推特信息及数据持久化!整理了我三天!
- 托盘垃圾广告软件追踪
- MQ(MessageQueue)消息队列
- 今天下载了一个刷机大师,结果把android的端口给占了。郁闷了很久