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

使用RobotFramework解决Tosca puzzle 81121循环点击按钮问题咨询

问题解答

1. 代码优化方案

你当前重复编写10次相同FOR循环的实现可以完全简化,需求为点击按钮直至文本变更,使用单次WHILE循环即可实现,还可以设置重试上限避免死循环。
优化后的完整代码如下:

*** Settings ***
Library   Browser
Library    String

*** Test Cases ***
Example Test 70310
    Browser.OPEN BROWSER  https://obstaclecourse.tricentis.com/Obstacles/81121
    ${btn_text}=    Get Text    //*[@id="button"]
    # 设置最大重试次数避免死循环
    ${max_retry}=    Set Variable    50
    ${retry_count}=    Set Variable    0
    WHILE    '${btn_text}' != 'ENOUGH' and ${retry_count} < ${max_retry}
        CLICK    xpath=/html/body/section/div/div/h3
        CLICK    xpath=/html/body/section/div/div/h3
        CLICK    //*[@id="button"]
        ${btn_text}=    Get Text    //*[@id="button"]
        ${retry_count}=    Evaluate    ${retry_count} + 1
    END
    Get Text         xpath=//body    *=   You solved this automation problem.

核心优化点:

  • 去掉10次重复的FOR循环逻辑,替换为单次WHILE循环
  • 新增最大重试限制,避免页面异常时出现死循环
  • 代码行数缩减超过70%,可读性和可维护性大幅提升

2. 报错原因

该报错是Robot Framework表达式变量替换的规则导致的:
你编写的CONTINUE FOR LOOP IF ${element} != 'ENOUGH'语句中,${element}变量在替换时会直接将实际值拼接进表达式,如果获取到的按钮文本为CLICK ME(中间带空格),替换后的表达式会变为CLICK ME != 'ENOUGH'。Python解析时会将没有引号包裹的CLICK ME识别为两个独立的标识符,而不是字符串,因此直接抛出语法错误。
修复方式非常简单,只需要给变量加上单引号包裹即可,修改为:
CONTINUE FOR LOOP IF '${element}' != 'ENOUGH'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:36:05