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

如何在FOR循环中使用IF ELSE?Robot Framework分页点击逻辑不生效问题

问题根因

  • 你只在脚本初始化阶段获取了第一页的表格长度${row1}并固定了循环次数,跳转到下一页后没有重新获取新页面的表格行数,原有循环执行完第一页的行数后就直接终止了,自然不会处理后续页面的内容
  • 你在循环内只要匹配到状态不一致就直接点下一页,但点完下一页后没有重置循环计数、也没有等待新页面加载完成就继续执行原有循环,会出现元素定位失效或者逻辑中断的问题

修复方案

调整逻辑为外层循环控制翻页,内层循环遍历当前页所有行,直到找到符合状态的行或者翻完所有页,修正后代码如下:

# 初始化翻页标记,默认有下一页
${has_next_page}    Set Variable    ${True}

WHILE    ${has_next_page}
    # 每次进入新页面先重新获取当前页表格长度
    ${row1}      Get Length    ${E.tableResultBusca}     
    ${rows1}  Set Variable   ${row1}-9
    ${find_target}    Set Variable    ${False}

    # 遍历当前页所有行
    FOR     ${i}    IN RANGE    1     ${rows1}
        ${lineStatus}   Get Text    xpath://*[@id="tblOrderList"]/tbody/tr[${i}]/td[6]
        Log To Console  Status:${lineStatus}
        IF  '${lineStatus}' != '${statusBuscaPedidos}'
            # 状态不匹配,标记不需要继续遍历当前页,准备翻页
            ${find_target}    Set Variable    ${False}
            BREAK
        ELSE 
            # 找到匹配状态,点击打开,终止所有循环
            Click Element   ${b.btnAbrir}
            ${find_target}    Set Variable    ${True}
            ${has_next_page}    Set Variable    ${False}
            BREAK
        END     
    END

    # 没找到目标,判断是否可以翻页
    IF    not ${find_target}
        # 先判断下一页按钮是否可点击,不可点击说明到最后一页
        ${next_btn_enabled}    Run Keyword And Return Status    Element Is Enabled    ${b.btnProximo}
        IF    ${next_btn_enabled}
            Click Element      ${b.btnProximo}
            # 等待新页面表格加载完成,避免定位失效
            Wait Until Element Is Visible    ${E.tableResultBusca}    timeout=10
        ELSE
            # 到最后一页也没找到,终止循环
            ${has_next_page}    Set Variable    ${False}
            Log To Console    所有页面已遍历完成,未找到匹配状态的行
        END
    END
END

注意事项

  • 可根据实际项目情况调整页面加载的超时时间
  • 如果下一页点击后存在加载动画,可额外添加等待动画消失的逻辑,避免提前获取表格数据导致报错

内容的提问来源于stack exchange,提问作者Maria

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:57:01