我试图找到问题的解决方案,我创建了一个代码,该代码登录到站点并检查站点的状态,但收集元素属性的状态并将其存储到名为$ {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}
在我看来最有效的是有条件的陈述,因为它带有我创建的关键词的话请告诉我应该做什么,谢谢。
答案 0 :(得分:1)
要记住的重要一点是条件被评估为python表达式。替换变量后,Robot会将条件直接传递给python。
当使用普通的$ {variable}语法在表达式中使用变量时,在计算表达式之前将替换其值。这意味着表达式中使用的值将是变量值的字符串表示形式,而不是变量值本身。对于具有可以直接求值的字符串表示的数字和其他对象,这不是问题,但对于其他对象,行为取决于字符串表示。最重要的是,必须始终引用字符串,如果它们可以包含换行符,则必须使用三重引号。
假设${GREEN}
包含green
且${class}
包含red
,这意味着当您执行此操作时:
Run Keyword If ${GREEN} == ${class}
Python看到了这个:
if green == red
请注意,green
和red
都没有引号,因为数据本身没有引号。
最简单的解决方案是添加自己的引号。 (注意:如果值可以有换行符或引号,最安全的选择是使用三引号)
Run Keyword If '${green}' == '${class}'
答案 1 :(得分:0)
为什么不直接与字符串进行比较。为什么要再次将这些颜色存储在列表中?
${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