You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 01:39:18