需要Robot frameworkxpath示例,以便在响应包含重复元素时查找xmleelement值

2024-09-30 06:18:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我第一次使用RF是因为它得到了其他人的推荐,而且我被告知没有必要体验Python。到目前为止进展顺利,但目前仍停留在以下问题上。我正在测试IBM的MDM事务。在

我有一种情况,我需要为进一步的测试检索一个特定的值,但是在响应中有一个重复的元素。在

例如:

<TCRMAdminContEquivBObj>
    <AdminContEquivIdPK>443149752876966203</AdminContEquivIdPK>
    <PartyId>445849752876959403</PartyId>
    <AdminPartyId>13022017010</AdminPartyId>
    <AdminSystemType>1</AdminSystemType>
</TCRMAdminContEquivBObj>
<TCRMAdminContEquivBObj>
    <AdminContEquivIdPK>441549752876967603</AdminContEquivIdPK>
    <PartyId>445849752876959403</PartyId>
    <AdminPartyId>f205c1d7-ed84-4852-8d1d-8fcd092af282</AdminPartyId>
    <AdminSystemType>36</AdminSystemType>
    </TCRMAdminContEquivBObj>

我需要从响应中检索以下值:<AdminPartyId>13022017010</AdminPartyId>

但是Robot框架XML库在使用XPath时会抱怨,因为它使用Get ElementText命令找到了两个同名的元素。在

是否可以通过添加第二个值来识别上述值?例如,使用<AdminSystemType>作为第二个标识符。如果是的话,我要怎么做?在

变量:

^{pr2}$

获取元素文本:

source=${XmlResponsePath} xpath=.//TCRMPersonBObj/AdminPartyId. 

我一直在寻找,但是我发现所有的例子都是指在这种情况下不适用的属性。在


Tags: 元素情况robot事务ibm体验rfmdm
2条回答

我找到了一条线索并制定了一个工作方案:

 *** Test Cases ***
Read XML Response values from TCRMAdminContEquivBObj
    [Tags]    GetElementsFromTransaction
    ${xml}  Parse Xml   ${XmlResponsePath}
    @{getxml}  Get Elements    ${xml}   .//TCRMAdminContEquivBObj
    Log To Console     results  - @{getxml}
    ${state}    Set Variable    NOT FOUND
    ${element3}  Set Variable    NOT FOUND
    : FOR    ${mainelement}    IN    @{getxml}
    \    Log To Console     results  - ${mainelement}
    \    ${element1}    Get Element Text    ${mainelement}    AdminPartyId
    \    ${element2}    Get Element Text    ${mainelement}    AdminSystemType
    \    ${element3}    Set Variable If    '${element2}'=='36'    ${element1}    ${state}
    \    Exit For Loop If    '${element3}'!= '${state}'
    #Should Not Be Equal    ${element3}    NOT FOUND    Did not find state    
    Log To Console  ${element3}

它可能不整洁,但似乎有效:)

在这个特定的示例中,第一项的xpath将是://TCRMAdminContEquivBObj[1]/AdminPartyId。但是,除非您的测试策略总是选择第一个,否则这将起作用。在

相关问题 更多 >

    热门问题