Robotframework 使用「;运行关键字if";使用字符串参数调用函数,但不更改字符串
我遇到了一个奇怪的问题,所以我编写了这个示例,其中我两次调用“print${dir}”: 输出:Robotframework 使用「;运行关键字if";使用字符串参数调用函数,但不更改字符串,robotframework,Robotframework,我遇到了一个奇怪的问题,所以我编写了这个示例,其中我两次调用“print${dir}”: 输出: "c:\temp" "c: emp" 我需要做什么才能使“print${dir}”每次打印相同的内容?在我看来,如果关键字对反斜杠进行了一些额外的转义,则运行关键字。通过增加1个反斜杠,您将在第一个示例中看到这种情况 要克服这个问题,需要从反斜杠()切换到正斜杠(/)。这适用于*nix和基于Windows的系统 *** Variables *** ${dir} = "c:\\temp
"c:\temp"
"c: emp"
我需要做什么才能使“print${dir}”每次打印相同的内容?在我看来,如果
关键字对反斜杠进行了一些额外的转义,则运行关键字。通过增加1个反斜杠,您将在第一个示例中看到这种情况
要克服这个问题,需要从反斜杠()切换到正斜杠(/)。这适用于*nix和基于Windows的系统
*** Variables ***
${dir} = "c:\\temp"
到
这仍然是Windows上的有效路径。因此,从功能上讲,路径引用也会起作用 问题源于您使用的是嵌入式参数语法。为了让robot知道要调用什么关键字,它必须在调用关键字之前首先对变量进行展开。这将删除一层反斜杠。然后,当关键字将剩下的内容传递到控制台日志关键字时,它会将\t
视为制表符,这就是为什么您会看到制表符而不是反斜杠和字母“t”
一种解决方案是使用传统参数,而不是嵌入参数。以下示例给出了两次调用关键字的相同输出:
*** Variables ***
${dir} = "c:\\temp"
*** Test Cases ***
Test
print ${dir}
run keyword if 1 == 1 print ${dir}
*** Keywords ***
print
[Arguments] ${input1}
log to console \r${input1}
*** Variables ***
${dir} = "c:/temp"
*** Variables ***
${dir} = "c:\\temp"
*** Test Cases ***
Test
print ${dir}
run keyword if 1 == 1 print ${dir}
*** Keywords ***
print
[Arguments] ${input1}
log to console \r${input1}