使用Capybara提取表格指定行tooltip文本并校验Excel数据
Capybara提取表格tooltip属性实现数据校验
你现在用的have_css只能做固定值的存在性校验,要提取属性值做动态比对,直接用Capybara的元素定位+属性读取方法就行,实现步骤如下:
- 定位目标元素并提取tooltip属性
用你已经写好的CSS选择器,通过find方法定位到目标img标签,直接读取自定义的tooltip属性值存入变量,find自带等待机制,能避免页面未加载完成导致的定位失败:# 定位指定行指定列下带tooltip的img标签 tooltip_element = find('tr.tvRow:nth-child(2) .tvCell:nth-child(6) img') # 读取tooltip属性值 actual_tooltip_value = tooltip_element['tooltip'] - 和Excel读取的数据做一致性校验
注意你通过sheet.row(1)拿到的hydrometer是一整行的数组结构,需要先找到这行里对应存储预期tooltip值的列索引,取出预期值再做断言,不要直接用整个数组比对:# 注意:这里的索引要根据你Excel实际存储tooltip的列位置调整,从0开始计数 # 比如tooltip存在第6列就填索引5,和页面列位置对齐即可 expected_tooltip_value = hydrometer[5] # 执行一致性校验 expect(actual_tooltip_value).to eq(expected_tooltip_value)
补充说明
- 你提供的页面HTML里,tooltip是直接写在img标签的原生属性上的,不需要鼠标悬浮触发就能直接读取,上面的代码可以直接使用。如果后续遇到悬浮才动态渲染的浮层类tooltip,需要先对目标元素执行
.hover,等浮层元素加载完成后再取浮层的文本内容。 - 如果需要批量校验多行数据,可以循环行号拼接CSS选择器,逐行提取tooltip值和Excel对应行的数据比对即可。
- 不要用
first方法无等待定位元素,容易出现偶发的定位失败问题,优先用带等待机制的find。
内容的提问来源于stack exchange,提问作者Elis
相关产品推荐
相关产品推荐

