0

我正在尝试验证 xpath 表达式,如果它是真的单击元素。以下是我正在尝试执行的代码。Xpath_combined 变量返回 Boolean : true 。请帮助我更正语法或有效表达式

在此处输入图像描述

多变的

${xpath_combined}       //div[text()='00:04:56:AC:41:F6'] AND //div[contains(text(),'Device-77')]

关键词

Run keyword if  ${xpath_combined} == "true" Click Element   //i[@class='fa fa-lg fa-file-text-o grow']

控制台输出错误

Evaluating expression '//div\[text()='00:04:56:AC:41:F6'\] AND //div\[contains(text(),'Gambit-77')\] == "true"' failed: SyntaxError: invalid syntax (<string>, line 1)]
4

2 回答 2

0

您可以创建不同的场景来解决这个问题。但是,您可以尝试以下解决方案:

Xpath = 使用 xpath,找到包含这两个元素的父元素。但这取决于你的代码结构 fe 尝试查找 body 元素,两个子元素包含特定的文本条件:

xpath=//body[//div[text()='00:04:56:AC:41:F6'] AND //div[contains(text(),'Device-77')]]

以正确的方式设置变量或使用标量。注意:我们将使用 Get Matching Xpath Keyword,所以我们不需要使用 'xpath=' 前缀

${xpath_combined}=    Set Variable    //body[//div[text()='00:04:56:AC:41:F6'] AND //div[contains(text(),'Device-77')]]

获取匹配的 Xpath 计数它将返回 1 个出现的 xpath。只有一个 body 元素通过 xpath 表达式

${count}=    Get Matching Xpath Count    ${xpath_combined} 

Run Keyword If如果 xpath 计数正好是 1 次,则元素出现在页面上,您可以单击图标。注意:不要忘记将 xpath= 前缀添加到 Click Element 定位器

Run keyword if    ${count} == 1    Click Element    xpath=//i[@class='fa fa-lg fa-file-text-o grow']
于 2016-05-16T09:42:50.393 回答
0

尽管另一种解决方案是完全可行的,但这是一种更通用的替代方案。

它结合了两个关键字 -Get Webelement如果存在则返回一个 selenium 对象,并且Run Keyword And Return Status-True如果关键字成功则返回,False否则:

${locator}=    Set Variable   //body[//div[text()='00:04:56:AC:41:F6'] AND //div[contains(text(),'Device-77')]]
${target}=     Set Variable   //i[@class='fa fa-lg fa-file-text-o grow']
${the element is present}=    Run Keyword And Return Status    Get Webelement  ${locator}

Run Keyword If    ${the element is present}    Click Element    ${target}

另一个好处是您不受 xpath 定位器的限制 - 它可以与 css、id 或任何其他策略一起使用。

或者,可以使用Element Should Be Visible代替Get Webelement,但这仅适用于实际可见的元素,而不仅仅是存在于 DOM 中。

于 2017-06-17T05:05:58.350 回答