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

Posted

技术标签:

【中文标题】在 If / Else 语句中将文本存储到标量中 - Robot Framework【英文标题】:Store Text into an Scalar within If / Else Statement - Robot Framework 【发布时间】:2020-11-24 00:57:37 【问题描述】:

我想在 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

那么,我该如何完成呢?

【问题讨论】:

您知道名为Set variable if的关键字吗? 【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于在 If / Else 语句中将文本存储到标量中 - Robot Framework的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中将 switch 转换为 if else

是否可以将 else-if 语句存储在 XML 文件中并从活动中调用它?

按钮、序列和 If/Else 语句

我应该如何在 awk 中使用 if-else 语句?

if or/and else if 语句被传递

向存储过程添加 IF ...ELSE 语句以跳过重复的主键