当前位置: 首页 > 工具软件 > Robot Emil > 使用案例 >

RobotFramework 之 公共变量

厍彭薄
2023-12-01

公共变量

前面了解了通过资源文件对用户关键字进行管理,将重复的内容提取出来,简化测试用例中的操作步骤

common.robot

*** Settings ***
Library     SeleniumLibrary

*** Keywords ***
登录网易邮箱
	# 打开chrome浏览器访问163邮箱
	open browser    https://mail.163.com/       chrome
	sleep    5
	maximize browser window
	# 切换到iframe
	select frame    xpath=//iframe[contains(@id,'iframe')]
	# 用户名输入框中输入 用户名
	sleep    2
	input 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 ***
用例1
	log to console    这里是用例主体部分

用例2
	log 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    ${网易邮箱地址}        chrome
	sleep    5
	maximize browser window
	# 切换到iframe
	select frame    ${iframe}
	# 用户名输入框中输入 用户名
	sleep    2
	input 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 ***
用例1
	log to console    这里是用例主体部分

用例2
	log 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]        chrome
	sleep    5
	maximize browser window
	# 切换到iframe
	select frame    ${iframe}
	# 用户名输入框中输入 用户名
	sleep    2
	input 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]        chrome
	sleep    5
	maximize browser window
	# 切换到iframe
	select frame    ${iframe}
	# 用户名输入框中输入 用户名
	sleep    2
	input 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        chrome
	sleep    5
	maximize browser window
	# 切换到iframe
	select frame    ${iframe}
	# 用户名输入框中输入 用户名
	sleep    2
	input text    ${用户名输入框}      ${账号数据}[权限1账号]
	sleep    2
	# 密码输入框中输入 密码
	input text    ${密码输入框}     ${账号数据}[权限1密码]
	sleep    2
	# 点击登录按钮
	click element    ${登录按钮}
	sleep    10

关闭浏览器
	close browser
		
 类似资料: