如何使用Run Keyword If实现元素不存在时校验另一元素存在
Run Keyword If 实现页面元素分支校验的实现方案 首先明确核心注意点:不要直接将断言类关键字Page Should Contain Element写在Run Keyword If的判断条件位——这个关键字校验失败时会直接抛出异常终止用例执行,根本不会进入ELSE分支,必须先将元素存在性的校验结果转为布尔值再做分支判断。
具体实现步骤
- 提前定义好两个元素的定位器,替换成你项目里实际的定位表达式即可
- 用
Run Keyword And Return Status包裹图表元素的校验逻辑,这个关键字会捕获断言结果,校验通过返回True、校验失败返回False,不会直接终止用例 - 基于返回的布尔值走
Run Keyword If分支:为True时执行图表存在后的后续业务流程,为False时走ELSE分支校验无数据提示图片是否存在
可直接复用的代码示例
*** Variables *** # 替换为实际的元素定位 ${data_chart_locator} xpath://div[@class='connected-user-chart'] ${no_data_tip_locator} xpath://img[@alt='No data Found'] *** Test Cases *** 校验连接用户对应页面展示逻辑 # 前置操作:打开待测页面,按你的实际业务逻辑补充 Open Browser ${your_test_page_url} chrome Wait Until Page Is Loaded # 核心分支判断逻辑 ${is_chart_show} Run Keyword And Return Status Page Should Contain Element ${data_chart_locator} Run Keyword If ${is_chart_show} Run Keywords ... Log 检测到已连接用户,数据图表加载正常 ... # 此处按顺序追加图表存在时需要执行的后续测试步骤即可 ... ELSE ... Page Should Contain Element ${no_data_tip_locator} ... Log 无已连接用户,无数据提示图片展示正常 # 公共收尾步骤 Close Browser
简写写法(Robot Framework 4.0+版本支持)
如果不想单独定义变量存储校验结果,可以直接在判断条件位调用返回布尔值的逻辑,写法更紧凑:
Run Keyword If Run Keyword And Return Status(Page Should Contain Element, ${data_chart_locator}) ... Log 图表存在,执行后续业务流程 ... ELSE Page Should Contain Element ${no_data_tip_locator}
常见踩坑提醒
- 如果分支内需要执行多个连续关键字,必须用
Run Keywords包裹同分支下的所有操作,否则框架会识别错关键字参数 - 不要省略ELSE分支前的换行缩进标记
...,否则会报语法错误 - 元素校验前建议加合理的显式等待,避免页面未加载完成导致的判断误判
内容的提问来源于stack exchange,提问作者Sandesh KS
相关产品推荐
相关产品推荐

