【问题标题】:Syntax error working with robot framework conditional statement and keyword使用机器人框架条件语句和关键字的语法错误
【发布时间】:2017-08-31 23:12:24
【问题描述】:

在这里我试图找到一个问题的解决方案,我创建了一个登录到站点并检查站点状态的代码,但收集元素属性的状态并将其存储到一个名为 ${class} 的变量中。现在这里的问题是该站点只能处于由颜色代码绿色、黄色、红色和灰色表示的四种状态。我尝试了 3 个解决方案

1 要将每个状态放入一个标量变量中,例如 ${GREEN}= status_indicator green 等等,然后下面的代码如下,但它没有工作

Run Keyword If  ${GREEN} == ${class}  Keyword green
...  ELSE IF  ${YELLOW} == ${class}  Keyword yellow
...  ELSE IF  ${RED} == ${class}  Keyword red
...  ELSE  Keyword gray

2 我将它们放入一个列表中,例如 @{COLOR}= status_indicator green 等等 然后尝试了这个

list should contain value  @{COLOR}  ${class}

在我看来,最有效的是条件语句,因为它与我创建的关键字一起使用请建议我应该做什么谢谢。

【问题讨论】:

  • “它不起作用”是什么意思?它抛出错误了吗?它做错了吗?
  • 是的,它会抛出错误“评估表达式'status_indicator green == status_indicator green'失败:SyntaxError: invalid syntax (, line 1)”
  • 运行关键字 If @{COLOR}[0] == ${class} 关键字 green ... ELSE IF @{COLOR}[1] == ${class} 关键字 Yellow ... ELSE IF @{COLOR}[2] == ${class} 关键字 red ... ELSE 关键字 gray
  • 请不要在评论区发布代码。相反,edit 你的问题。

标签: python robotframework


【解决方案1】:

要记住的重要一点是,条件被评估为 Python 表达式。 Robot会在代入变量后直接将条件传递给python。

来自documentation

当使用普通 ${variable} 语法在表达式中使用变量时,它的值在表达式被计算之前被替换。这意味着表达式中使用的值将是变量值的字符串表示形式,而不是变量值本身。这对于具有可以直接评估的字符串表示的数字和其他对象来说不是问题,但是对于其他对象,行为取决于字符串表示。最重要的是,字符串必须始终被引用,如果它们可以包含换行符,它们必须被三重引用。

假设${GREEN}包含green${class}包含red,这意味着当你这样做时:

Run Keyword If  ${GREEN} == ${class}

Python 看到了这个:

if green == red

请注意,greenred 都没有引号,因为数据本身没有引号。

最简单的解决方案是添加您自己的引号。 (注意:如果值可以有换行符或引号,最安全的选择是使用三引号)

Run Keyword If  '${green}' == '${class}'

【讨论】:

  • 如何在机器人框架中写>=条件?
  • @Smash:正如你所期望的那样:>=
【解决方案2】:

为什么不直接与字符串比较。为什么你又把这些颜色存储在一个列表中?

${class}=  Get Element Attribute
Log To Console    ${class}
#I hope you are able to get the exact attribute of that tag(color).


Run Keyword If  '${class}'=='Green'  Keyword green
...  ELSE IF  '${class}'=='Yellow'  Keyword yellow
...  ELSE IF  '${class}'=='Red'  Keyword red
...  ELSE  Keyword gray

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 2021-08-15
    • 2017-12-23
    • 2020-09-04
    • 2015-09-10
    • 2016-04-07
    • 1970-01-01
    • 2020-09-25
    相关资源
    最近更新 更多