Capybara分页查找记录 首页存在目标时跳过翻页循环实现方法
问题解决方案
问题根源
原有逻辑在点击插入按钮后直接进入翻页循环,没有优先校验目标记录是否已经存在于第一页,当目标记录在首页、下一页按钮为禁用状态时,会出现无效点击甚至流程报错的问题。
实现逻辑
- 插入记录完成后,优先检查当前第一页是否存在目标记录,存在则直接定位,不进入翻页流程
- 仅当首页找不到目标记录时才启动翻页循环,循环前先校验下一页按钮是否为可用状态,避免点击禁用控件
- 每次翻页后立即校验目标记录是否加载完成,找到后立刻终止循环,减少无效等待
修改后完整代码
def cad_diametro_material_ativo input_codigo.send_keys('aut_Server_AL') input_ordem.send_keys('1') @gera_material_ativo = 'AUT_Server_ALUMINIO_ATIVO'+ rand(1..99).to_s input_descricao.send_keys(@gera_material_ativo) btn_inserir.click # 首页存在目标记录则直接跳过翻页逻辑 unless page.has_css?("td", text: @gera_material_ativo, wait: 3) # 仅当下一页按钮可用时才执行翻页扫描 while page.has_css?(".icon.icon_down.Enabled", wait: 1) do btn_move_registros.click break if page.has_css?("td", text: @gera_material_ativo, wait: 3) end end find("td", text: @gera_material_ativo).click btn_cancelar.click end
按钮状态判断依据
从提供的页面HTML片段可以看到,翻页按钮通过类名区分可用状态:
- 可点击的下一页按钮class包含
Enabled标识,绑定了翻页触发事件 - 禁用状态的翻页按钮无
Enabled类名,无绑定点击事件
<!-- 可用下一页按钮示例 --> <img src="r/std/static/pixel.gif" class="icon Enabled icon_down" draggable="false" onclick="loadPage('tvTDiametroMat','1','11',2);"> <!-- 禁用翻页按钮示例 --> <img src="r/std/static/pixel.gif" class="icon icon_ro-up" draggable="false">

内容的提问来源于stack exchange,提问作者Elis
相关产品推荐
相关产品推荐

