使用Robot Framework自动化测试:同浏览器相同标题标签页切换问题
Robot Framework 同标题标签页切换解决方案
原有脚本使用TAB 2索引定位窗口的方式稳定性差,且同标题场景下无法通过标题匹配窗口,同时框架的操作上下文和浏览器视觉展示的当前标签页独立,必须显式调用切换关键字更新上下文才能定位新页面元素,以下是两种可行解决方案:
方案1:使用NEW参数直接切换最新窗口(最简方案)
SeleniumLibrary 内置的Switch Window关键字支持传入NEW作为定位参数,会自动匹配最近打开的新标签页/窗口,完全不依赖标题、索引属性,完美适配同标题场景。
修正后脚本示例:
Click Element //*[@id="id1"] Sleep 3 seconds # 直接切换到最新打开的窗口,无需指定索引或标题 Switch Window NEW Wait Until Page Contains Element //*[@id="id2"] Click Element //*[@id="id3"] Sleep 20 seconds # 后续如果需要切回原窗口,可使用MAIN参数 # Switch Window MAIN
方案2:通过窗口句柄筛选切换(兼容性最高,适合多新窗口场景)
如果单次操作会打开多个新窗口,可通过记录原窗口句柄、筛选新句柄的方式精准切换,不会受任何页面属性影响:
# 点击触发新窗口前,先记录原窗口句柄 ${original_handle} Get Window Handle Click Element //*[@id="id1"] Sleep 3 seconds # 获取所有窗口句柄,筛选出新打开的句柄 ${all_handles} Get Window Handles ${new_handles} Remove Values From List ${all_handles} ${original_handle} # 切换到第一个新打开的窗口 Switch Window ${new_handles}[0] Wait Until Page Contains Element //*[@id="id2"] Click Element //*[@id="id3"] Sleep 20 seconds
注意事项
- 禁止省略
Switch Window关键字:浏览器视觉停留在新标签页不代表框架操作上下文同步切换,必须显式调用切换关键字更新上下文,才能正确定位新页面元素。 - 不推荐使用
TAB 数字的索引方式定位窗口:浏览器标签页顺序变化、历史测试残留标签页都会导致索引匹配错误,稳定性极低。
内容的提问来源于stack exchange,提问作者Marc Cholvi Jaureguizar
相关产品推荐
相关产品推荐

