我可以在机器人框架中获取xpath计数值吗

时间:2018-10-26 10:34:20

标签: xpath robotframework

假设以下XML:

<data>
    <node id="1" />
    <node id="2" />
    <node id="12" />
    <node id="16" />
</data>

此xpath表达式应有效:

count(//node)

..并应产生数字4

我是机器人框架的新手。是否可以在机器人框架中使用此xpath? 例如:

${value}=  Get something something   source=${xml}    xpath=count(//node)

下面的一个有效,但是我希望xpath产生最终值,而不是列表。

@{nodelist}=         Get Elements    ${xml}  xpath=node
Length Should Be    ${nodelist}      4

修改

我知道我可以计算节点列表中的节点数。但是,我想使用xpath获取绝对值(整数或字符串)。现在,我需要编写不同的代码,具体取决于xpath结果在理论上可以产生最终值时是节点,列表还是属性。

2 个答案:

答案 0 :(得分:2)

您可以使用Get Element Count关键字返回与定位符匹配的元素数

您可以做些简单的事情

${count} =  Get Element Count   name:div_name
Should Be True  ${count} > 2

有关关键字的更多信息,请查看此Keyword Page

答案 1 :(得分:1)

使用XML时,通常最好使用XML库。在以下示例中,您将找到一种使用XML库Get Element Count对元素进行计数的解决方案。

data.xml

<data>
    <node id="1" />
    <node id="2" />
    <node id="12" />
    <node id="16" />
</data>

Testcase.robot

*** Settings ***
Library   XML
Library   OperatingSystem    

*** Test Cases ***
TC
    ${xml}      Get File    ./data.xml
    ${count}    Get Element Count    ${xml}    xpath=node
    Should Be Equal As Integers    ${count}    ${4}