问题描述
这有效
<<file1.robot>>
**Setting**
Resource file2.robot
**Variables**
${file1_var1} ${file2_var1}
**Keyword**
Check It
Click ${file1_var1}
哪里
<<file2.robot>>
**Settings**
Variables file2Locator.py
<<file2Locator.py>>
file2_var1 = "id=Clickable"
Click id=Clickable 调用成功,关键字为“Click It”
但是,以下失败:
<<file1Fail.robot>>
**Setting**
Resource file2.robot
Variables file1Fail.py firstSet
**Keyword**
Check It
Click ${file1_var1}
哪里
<<file1Fail.py>>
SetoneVar = {'file1_var1': "${file2_var1}"}
def get_variables(arg):
if arg == 'firstSet': return SetoneVar
else return
由于 UiSelector[DESCRIPTION=${file2_var1}] 显然不起作用的错误。 换句话说,从 python 文件 1 获取变量时,按字面调用 Click ${file2_var1},而不是 Click id=Clickable。 “${file2_var1}”不再被“id=Clickable”取代。
有什么解决办法吗?如何调用将一个变量定义为另一个资源文件中导入的另一个变量
解决方法
在 python 文件中,您定义的变量 (file1_var1
) 的值设置为字符串 ${file2_var1}
(由于 $
和{}
,但它只是一个字符串)。当框架将它作为变量文件导入时,它不会自动替换它——“你将值设置为一个字符串,你得到的是一个字符串”。
稍后,在导入后,您可以用 ${file2_var1}
后面的值替换/替换它 - 只要 file2_var1
在当前作用域中定义。这是通过调用 Replace Variables 来完成的,它返回替换版本(例如,不修改原始变量):
${file2_var1}= Replace Variables ${file2_var1}