我正在尝试验证演练弹出窗口,每次关闭时我都会执行此关键字以再次打开它,但如果我多次执行它会失败并出现错误。语法是正确的,因为我可以在其他 TC 中执行 2-3 次。谁能帮我理解问题出在哪里?

Open Walkthrough Guide If It is Closed
${ELEMS}=  ,robotframework"/>
	














首页 > 解决方案 > 评估表达式'[

我正在尝试验证演练弹出窗口,每次关闭时我都会执行此关键字以再次打开它,但如果我多次执行它会失败并出现错误。语法是正确的,因为我可以在其他 TC 中执行 2-3 次。谁能帮我理解问题出在哪里?

Open Walkthrough Guide If It is Closed
${ELEMS}=  

问题描述

我正在尝试验证演练弹出窗口,每次关闭时我都会执行此关键字以再次打开它,但如果我多次执行它会失败并出现错误。语法是正确的,因为我可以在其他 TC 中执行 2-3 次。谁能帮我理解问题出在哪里?

Open Walkthrough Guide If It is Closed
${ELEMS}=    Get WebElements    ${WELCOME_POPUP}
Run Keyword If    ${ELEMS} == @{EMPTY}    Run Keywords
...    Execute Javascript    localStorage.setItem('peopleAnalyticsTourDismiss', 'false')
...    AND    Reload Page

错误代码

Evaluating expression '[<selenium.webdriver.remote.webelement.WebElement (session="461c3d8d360e2040589b1f70653b326d", element="3de37e69-02bd-4b76-8ff0-1bd652b952d7")>] == []' failed: SyntaxError: invalid syntax (<string>, line 1)

如果你想运行一个关键字 if${ELEMS}是一个空列表,我建议这样写:

Run keyword if  len($elems) == 0  ...

原因是,表达式${ELEMS}中不是元素列表,而是元素列表的字符串表示。Using$elems是一种在表达式中使用实际对象的方法。

从文档中:

当使用正常的 ${variable} 语法在表达式中使用变量时,它的值在表达式被计算之前被替换。这意味着表达式中使用的值将是变量 value 的字符串表示形式,而不是变量 value 本身。

此语法在BuiltIn library的文档中,在标题为Evaluating expressions的部分中介绍

标签: robotframework

解决方案


如果你想运行一个关键字 if${ELEMS}是一个空列表,我建议这样写:

Run keyword if  len($elems) == 0  ...

原因是,表达式${ELEMS}中不是元素列表,而是元素列表的字符串表示。Using$elems是一种在表达式中使用实际对象的方法。

从文档中:

当使用正常的 ${variable} 语法在表达式中使用变量时,它的值在表达式被计算之前被替换。这意味着表达式中使用的值将是变量 value 的字符串表示形式,而不是变量 value 本身。

此语法在BuiltIn library的文档中,在标题为Evaluating expressions的部分中介绍


推荐阅读