如何使用ROBOT framework验证表格中的指定行(如第2行)
Robot Framework 校验表格指定第2行数据实现方法
你新增设备后需要校验列表对应记录,可按以下方式实现,参考界面如下:
核心逻辑
Web页面的标准表格由<table>标签嵌套行标签<tr>、单元格标签<td>构成,只需要精准定位到目标行的对应单元格,取出文本和预期新增的设备参数做断言即可。需要注意不同定位方式的计数规则差异,避免索引偏移取错数据。
实现方式1:手写XPath定位(通用性最强,适配所有表格场景)
基于SeleniumLibrary实现,XPath的位置计数从1开始,如果你的表格第一行是表头,那么你要校验的第2行(首条数据行)对应的tr索引就是2,示例代码:
*** Settings *** Library SeleniumLibrary Library String # 用于处理文本多余空白 *** Test Cases *** 校验新增设备在表格第2行的记录 # 自行补充前置步骤:登录系统、进入设备列表页面 # 等待表格加载完成,避免异步渲染导致取值为空 Wait Until Element Is Visible xpath=//table[@class='device-list']//tr[2] timeout=5s # 逐列取出第2行的单元格内容,td后的索引对应列数,从1开始 ${device_name}= Get Text xpath=//table[@class='device-list']//tr[2]/td[1] ${device_type}= Get Text xpath=//table[@class='device-list']//tr[2]/td[2] ${device_status}= Get Text xpath=//table[@class='device-list']//tr[2]/td[3] ${create_time}= Get Text xpath=//table[@class='device-list']//tr[2]/td[4] # 处理文本前后多余的空白字符 ${device_name}= Strip String ${device_name} ${device_type}= Strip String ${device_type} ${device_status}= Strip String ${device_status} # 替换为你新增设备时填入的预期值做断言 Should Be Equal ${device_name} 测试新增设备001 Should Be Equal ${device_type} 物联网网关 Should Be Equal ${device_status} 运行中 Should Not Be Empty ${create_time}
提示:定位table时尽量带上id、class等唯一属性,避免页面存在多个表格时定位错误。
实现方式2:调用SeleniumLibrary内置表格关键字(代码更简洁)
如果表格是标准结构,不需要复杂定位,可以直接用库自带的Get Table Cell关键字,注意这个关键字的行、列计数从0开始,如果表头算第0行,那么第2行数据对应的行索引就是1,示例代码:
*** Settings *** Library SeleniumLibrary *** Test Cases *** 内置关键字校验第2行数据 # 前置步骤:进入设备列表页 Wait Until Page Contains Element id:deviceTable 5s # 语法:Get Table Cell 表格定位 行索引 列索引 ${name_col}= Get Table Cell id:deviceTable 1 0 ${type_col}= Get Table Cell id:deviceTable 1 1 # 后续断言逻辑和上述写法一致 Should Be Equal ${name_col} 测试新增设备001
常见注意事项
- 索引偏移问题:正式写用例前先打开浏览器开发者工具,确认目标tr的位置,区分XPath从1计数、内置关键字从0计数的规则差异
- 动态加载适配:如果表格是接口异步拉取数据,一定要加显式等待,等目标行渲染完成后再取值,不要直接用固定sleep
- 嵌套元素处理:如果单元格内有按钮、标签等嵌套元素,
Get Text关键字会自动提取单元格内所有可见文本,不需要额外定位子标签,如果有多余换行、空格,用String库的关键字处理后再断言即可
内容的提问来源于stack exchange,提问作者Abhishek K
相关产品推荐
相关产品推荐

