Могу ли я получить значение счетчика xpath в каркасе робота - PullRequest
0 голосов
/ 26 октября 2018

Предположим, следующий 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 узлом, списком или атрибутом, когда xpath может теоретически получить окончательное значение.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

При работе с 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}  
0 голосов
/ 26 октября 2018

Вы можете использовать ключевое слово Get Element Count, которое возвращает количество элементов, соответствующих локатору

Вы можете сделать что-нибудь простое, как это

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

Для получения дополнительной информации о ключевых словахпосмотрите на эту страницу с ключевыми словами

...