使用 Python 文件将变量定义为 Robot Framework 中的变量

问题描述

这有效

<<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}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...