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 之 公共变量相关推荐

  1. C#学习笔记-数据的传递(公共变量)以及Dictionary

    看的代码越多,写的代码越多,就越是享受这些字符,终于渐渐懂得了那种传闻中的成就感,特别是自己从看不懂然后一步一步学,一个代码一个代码地敲,最后哪怕只是完成了一个小功能,也都是特别自豪的!这种自豪不用告 ...

  2. python公共变量_Python中的公共变量

    python公共变量 By default all numbers, methods, variables of the class are public in the Python programm ...

  3. protractor测试框架6----报告、公共方法、公共变量

    1.报告在protractor.conf.js中配置后会自动生成,保存在如下目录 : 会自动生成html报告,用例执行失败的时候会有截图放在screenshots目录下 2.公共方法,如node.js ...

  4. 微信小程序 app=getApp()公共变量在页面间传值技巧。

    1.公共变量 在开发过程中,避免不了会使用公共变量,记录共享对象状态.数据最简单的方式就是创建创建公共变量: 当业务逻辑变多,还采用这种思想就会变得危险,代码逻辑变得不清晰,慢慢就有一种代码坏味道. ...

  5. laravel 向模板中添加公共变量

    1.在App\Providers\AppServiceProvider 添加 view()->composer('*', //模板名多个可用数组"['blade1', 'blade2' ...

  6. Spring中采用公共变量并发问题解决

    由于系统采用springmvc框架,springmvc核心控制器DispatcherServlet 默认为每个controller生成单一实例来处理所有用户请求,所以在这个单一实例的controlle ...

  7. python公共变量声明_Python变量声明

    繁星coding 好的,首先要做的事情.Python中没有"变量声明"或"变量初始化"这样的东西.简直就是我们所谓的"任务",但应该只是称之 ...

  8. postma公共变量的设置及使用

    在Tests里写这段 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }) ...

  9. php 如何定义公共变量,php如何定义全局变量

    php全局变量用global定义一下就好,就在外面定义global是错的,必须在函数内声明 定义方式:global $variable 讲解:$variable 为变量名,global为全局变量的类型 ...

最新文章

  1. Opera 60 正式发布,代号 Reborn 3
  2. python有趣小程序 表白-抖音最火的整蛊表白小程序如何做出来的?教你用python做出...
  3. 按键抖动仿真Testbench(repeat、task、random)的用法
  4. PyQt4编程之模态与非模态对话框(一)
  5. Ubuntu Server 16.04 LTS上给Docker配置镜像加速器
  6. dell服务器怎么看硬件状态,从DELL 2950和DELL R710看服务器硬件
  7. 外显子和基因组基本概念(一)
  8. linux高级命令组合
  9. DirectX11 With Windows SDK--07 添加光照与常用几何模型、光栅化状态
  10. Tensorflow(r1.4)API--tf.summary.scalar
  11. android调weex方法,Android集成weex汇总
  12. squid 折叠回源解析
  13. 猿如意|初识CSDN的开发者工具合集
  14. 捣鼓车间 | 学生获奖作品:戒烟帽
  15. 五险一金 | 养老保险的认识
  16. NVIDIA_CUDA版本查看方法_WIN10
  17. Android实现APK智能安装且安装后自启动,亲测有用!
  18. JDK、JRE、JVM分别是什么及它们之间的有什么关联
  19. wireshark域名过滤
  20. 九蒸九晒熟地黄的功效

热门文章

  1. [足式机器人]Part2 高等机构学Ch0X-2 空间闭式运动链的自由度公式及计算——【读书笔记】
  2. KEIL5工程不能编译和下载,运行时提示找不到.axf文件(Error: Flash Download failed - Could not load file“.axf“)
  3. EasyX图形库基础
  4. Oracle9i突破内存限制,oracle9i 的内存分配
  5. 实现纯前端生成字母头像
  6. 家用计算机调制解调器,Win7电脑提示“找不到调制解调器”怎么办?
  7. Python Scrapy 爬虫框架爬取推特信息及数据持久化!整理了我三天!
  8. 托盘垃圾广告软件追踪
  9. MQ(MessageQueue)消息队列
  10. 今天下载了一个刷机大师,结果把android的端口给占了。郁闷了很久