在Robot Framework中寻找具有相同元素名称的不同文本

时间:2019-05-02 19:37:12

标签: xml robotframework

我有一个看起来像这样的XML:

<vehicles>
   <car>
      <model>Accord</model>
      <color>Red</color>
   </car>
   <car>
      <model>Civic</model>
      <color>White</color>
   </car>
</vehicles>

我已经知道XML中应该有红色Accord和White Civic。我想使用Robot Framework的XML库来确保“红色”和“雅阁”位于同一个“汽车”元素中,而“白色”与“思域”同在另一个。

我能够使用关键字Get Elements将“ car”元素放入列表中。但是,由于我不能保证哪个“ car”元素是哪个元素,因此我不能使用Element Text Should Be关键字来查看颜色是什么,而不先检查它是什么模型(反之亦然)。

是否可以在测试用例中使用条件逻辑来检查Accord和Red是否在同一个汽车元素中,而Civic和White是否在同一个汽车元素中?

1 个答案:

答案 0 :(得分:1)

为解决您的问题,建议您在XML上使用LOOP并与自己的预期数据字典进行比较。此处提供用于解决的示例代码:

${xml}    Parse Xml    ex.xml
${expectedVehicle}=    Create Dictionary    Civic=White   Accord=Red

@{vehicles}    Get Elements    ${xml}    car
 :FOR    ${vehicle}    IN    @{vehicles}
 \    ${car}    Get Element Text    ${vehicle}    model
 \    ${color}    Get Element Text    ${vehicle}    color
 \    run keyword If   '${car}'
 \    ...     Should Be Equal As Strings     ${color}    ${expectedVehicle}[${car}]