Robot Framework Browser插件:如何获取MPP Status的CSS/XPath?
问题
在Robot Framework中使用Browser插件时,无法获取MPP Status对应的状态文本(应为PASS或FAIL)。尝试了以下两种方式均未成功:
Get Text //*[contains(text(), 'MPP Status')]//following-sibling::spanGet Text //*[contains(text(), 'MPP Status')]//following-sibling::span equal 'PASS'
对应的HTML代码片段:
<table _ngcontent-c="" class="table table-vertical"> ... <tbody _ngcontent-c=""><tr _ngcontent-c="" class="ng-star-inserted"> ... <th _ngcontent-c="">MPP Status</th><td _ngcontent-c=""> ... <!----> ... <!----> ... <span _ngcontent-c="" class="label label-success ng-star-inserted"> PASS </span> ... <!---->
解决思路
1. 修正XPath定位逻辑
原XPath的问题在于:定位到MPP Status的<th>元素后,直接找following-sibling::span是错误的——<th>的同级元素是<td>,而状态文本所在的<span>是嵌套在<td>内部的。正确的定位路径应该是:
- 基础版XPath:
Get Text //th[text()='MPP Status']/following-sibling::td/span - 精准版XPath(结合表格类名缩小范围):
Get Text //table[@class='table table-vertical']//th[text()='MPP Status']/following-sibling::td/span
2. 状态断言的正确写法
Robot Framework的Get Text关键字不支持直接追加equal参数做断言,需要拆分步骤,同时注意去除文本前后的空格:
${status}= Get Text //th[text()='MPP Status']/following-sibling::td/span Should Be Equal ${status.strip()} PASS
3. 动态页面适配
页面带有Angular标识(_ngcontent-c、ng-star-inserted),元素可能是动态加载的,建议先等待元素可见再操作:
Wait For Element Visible //th[text()='MPP Status']/following-sibling::td/span ${status}= Get Text //th[text()='MPP Status']/following-sibling::td/span Should Be Equal ${status.strip()} PASS
内容的提问来源于stack exchange,提问作者SamiM
相关产品推荐
相关产品推荐

