ROBOT Framework Run Keyword And Ignore Error用法及代码示例求助
报错原因说明
MoveTargetOutOfBoundsException 报错的核心逻辑是Selenium判定目标元素不在当前视口的可交互范围内,你肉眼可见滚动到位但仍报错,常见触发场景如下:
- 页面存在固定悬浮的顶部导航栏/底部栏,元素滚动后被悬浮元素遮挡,Selenium判定其无法交互
- 滚动操作执行后页面元素未完成渲染,关键字校验时元素还未稳定在视口内
Scroll Element Into View默认将元素对齐到视口顶部,刚好被顶部悬浮元素挤占了可视空间
方案1:优化滚动逻辑(优先使用,稳定性更高)
优先调整滚动关键字的参数从根源解决问题,不需要捕获异常:
# 指定将元素对齐到视口底部,避免被顶部悬浮栏遮挡,滚动后等待0.5秒让元素稳定 Scroll Element Into View xpath=/html/body/section/div[3]/div align_to_bottom=${True} Sleep 0.5s # 后续对该元素的操作,比如点击、取值等
方案2:使用Run Keyword And Ignore Error捕获异常
如果确认滚动实际已生效仅关键字判定报错,可以用该关键字兜底处理,写法如下:
基础写法(直接忽略异常,不处理返回结果)
# 直接执行滚动关键字,忽略所有报错 Run Keyword And Ignore Error Scroll Element Into View xpath=/html/body/section/div[3]/div Sleep 0.5s # 后续继续执行操作
进阶写法(获取执行状态,可做二次校验)
Run Keyword And Ignore Error 会返回两个值:第一个为执行状态(PASS/FAIL),第二个为返回结果或报错信息,你可以基于返回值做后续校验:
${执行状态} ${报错信息} Run Keyword And Ignore Error Scroll Element Into View xpath=/html/body/section/div[3]/div # 可选:不管滚动关键字是否报错,都校验元素是否可见,确认滚动实际生效 Wait Until Element Is Visible xpath=/html/body/section/div[3]/div timeout=3s # 后续执行元素操作 Click Element xpath=/html/body/section/div[3]/div
注意事项
- 优先使用方案1解决问题,忽略异常仅作为兜底方案,避免隐藏真实的元素定位错误等问题
- 如果页面存在懒加载逻辑,滚动后可增加
Wait Until Element Is Enabled关键字校验元素状态后再操作
内容的提问来源于stack exchange,提问作者Nagendran
相关产品推荐
相关产品推荐

