Robot Framework中如何存储关键字执行结果到变量并获取布尔值
问题原因
Page Should Contain是SeleniumLibrary提供的断言类关键字,本身无返回值:
- 页面匹配到目标文本时,关键字正常执行完成,没有返回内容,这就是你赋值拿到
None的原因 - 页面未匹配到目标文本时,关键字会直接抛出断言错误,终止当前用例执行,不会走到后续赋值、打印步骤
另外你提供的示例代码里目标文本存在拼写错误:写的是The login hasfailed.,和你预期校验的The login has failed.少了空格,也会导致校验结果不符合预期。
获取布尔值返回结果的实现方案
根据你是否需要保留「断言失败即终止用例」的特性,二选一即可:
方案1:不终止用例,仅获取检查的布尔结果
如果你的需求是不管文本存在与否都继续执行后续逻辑,只拿到True/False的检查结果,用BuiltIn库内置的Run Keyword And Return Status关键字包裹原断言即可。这个关键字会捕获被包裹关键字的执行状态:执行成功返回${True},执行失败返回${False},不会抛出错误终止用例。
示例代码:
${item} = Run Keyword And Return Status Page Should Contain The login has failed. Log To Console ${item}
执行后${item}就是你需要的布尔值:页面存在对应文本时值为True,不存在时值为False。
方案2:保留原断言终止逻辑,同时记录校验状态
如果你需要保留原断言的能力——即文本不存在时直接终止用例抛错,不需要额外包裹关键字。因为只要断言执行通过能走到下一步,就说明校验已经符合预期,直接给变量赋值True即可:
Page Should Contain The login has failed. ${item} = Set Variable ${True} Log To Console ${item}
这种写法下如果页面不存在目标文本,用例会直接在Page Should Contain步骤抛错终止,不会执行后续赋值逻辑,完全保留原有断言的校验能力。
内容的提问来源于stack exchange,提问作者chumba mumbau
相关产品推荐
相关产品推荐

