如何在Robot Framework中处理保存或数据已存在时的弹窗提示
在Robot Framework中处理两种模态弹窗提示场景
核心方案
先等待保存操作触发的模态弹窗加载完成,获取弹窗内的提示文本,再根据文本内容分支执行对应逻辑。以下是具体实现方式:
基础实现示例
假设你已经定义了弹窗相关元素的定位器(比如通过XPath/CSS选择器),可以直接用条件判断处理两种场景:
*** Test Cases *** Process Save Data Scenarios # 执行保存操作(替换为实际的保存按钮定位器) Click Element //button[@id='save-btn'] # 等待弹窗提示文本元素可见,设置超时时间避免阻塞 Wait For Element Visible //div[@class='modal-content']/p timeout=10s # 获取弹窗内的提示文本 ${popup_msg}= Get Text //div[@class='modal-content']/p # 根据提示文本执行对应逻辑 Run Keyword If '${popup_msg}' == 'Data saved successfully' Handle SuccessfulSave ... ELSE IF '${popup_msg}' == 'Data already exist' Handle DuplicateData ... ELSE Fail 触发未预期的弹窗提示:${popup_msg} # 关闭弹窗(替换为实际的关闭按钮定位器) Click Element //button[@class='modal-close'] *** Keywords *** Handle SuccessfulSave Log To Console 数据保存成功,执行后续业务流程 # 这里添加保存成功后的操作,比如跳转至数据列表页、验证数据存在等 Handle DuplicateData Log To Console 数据已存在,执行重复数据处理逻辑 # 这里添加重复数据的处理,比如修改数据字段、删除原有数据后重新保存等
封装复用关键字
如果多个测试用例都需要处理该弹窗,可以将逻辑封装为可复用的关键字,提升代码维护性:
*** Keywords *** Handle SaveModalPopup [Documentation] 统一处理保存数据后的模态弹窗,分支处理成功/重复数据场景 # 等待弹窗加载 Wait For Element Visible ${MODAL_MESSAGE_LOCATOR} timeout=10s ${msg_text}= Get Text ${MODAL_MESSAGE_LOCATOR} Log 弹窗提示:${msg_text} # 分支逻辑 IF '${msg_text}' == 'Data saved successfully' Log 执行保存成功后的后续操作 # 自定义成功流程,例如:Go To ${DATA_LIST_PAGE_URL} ELSE IF '${msg_text}' == 'Data already exist' Log 执行重复数据处理流程 # 自定义重复数据处理,例如:Click Element ${EDIT_BUTTON_LOCATOR} ELSE Fail 遇到未定义的弹窗提示:${msg_text} END # 关闭弹窗 Click Element ${MODAL_CLOSE_BUTTON_LOCATOR}
使用时只需在测试用例中调用该关键字即可:
*** Test Cases *** Add New Data # 填写表单数据步骤... Click Element ${SAVE_BUTTON_LOCATOR} Handle SaveModalPopup
注意事项
- 请将示例中的
${MODAL_MESSAGE_LOCATOR}、${SAVE_BUTTON_LOCATOR}等替换为你项目中实际的元素定位器。 - 如果弹窗文本存在大小写或空格差异,可以使用
String.lower()统一格式后再判断,例如:${lower_msg}= String.lower ${popup_msg} Run Keyword If '${lower_msg}' == 'data saved successfully' ...
内容的提问来源于stack exchange,提问作者reyansh yadav
相关产品推荐
相关产品推荐

