在 If / Else 语句中将文本存储到标量中 - Robot Framework

Store Text into an Scalar within If / Else Statement - Robot Framework

我想在 Robot Framework 中完成以下内容

我想将元素 xpath://*[@id="plsAttachGrid_0_1"] 中的文本存储到标量 ${name3} 中,但是,该元素在网页上并不总是可用,因此,我需要 运行 IF/ELSE 语句,以避免在元素不可用时出现错误

我的想法如下:

${countt2}=    Get Element Count    xpath://*[@id="plsAttachGrid_0_1"]
Run Keyword If    ${countt2}>0    
${name3}=    Get Text    xpath://*[@id="plsAttachGrid_0_1"]
ELSE    LOG    NO_FILE

但是,我了解到无法在 Run Keyword If 内存储到标量中,因为它需要 Keyword.

因此,我该如何完成?

Run Keyword If 中的关键字可以 return 向上传播的值 - 例如可以赋值给放在Run Keyword If之前的变量;所以在你的情况下:

${name3}=    Run Keyword If    ${countt2}>0        Get Text    xpath://*[@id="plsAttachGrid_0_1"]

所以现在 ${name3} 将在 ${countt2}>0 时具有 Get Text 的 return 值。
如果不满足条件,它的价值是多少?它将是 None(数据类型,而不是字符串),因为变量现在已声明,但未明确定义。

在这种情况下,您可以将其设置为不同的值,以便稍后在代码中更轻松地处理它:

${name3}=    Run Keyword If    ${countt2}>0        Get Text    xpath://*[@id="plsAttachGrid_0_1"]
                 ...           ELSE                Set Variable     not_set  # or [=11=], or any other value you need for ${countt2}<=0