使用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
相关产品推荐
相关产品推荐

