Karate框架switchPage功能1.1.0修复后多版本仍失效问题咨询
问题修复方案
导致switchPage不生效的原因有两个,按以下步骤调整即可解决:
- 切换标签页前必须先切回顶层frame:你之前执行了
switchFrame('#iframeResult')进入了iframe上下文,该状态下直接调用switchPage会导致驱动无法正确识别新打开的标签页,需要先调用无参的switchFrame()切回顶层上下文。 - 调整switchPage的URL匹配规则:Karate的switchPage默认采用精确匹配规则,如果你要匹配的页面URL存在动态后缀,可以用部分匹配语法,传入
contains:URL前缀即可命中所有包含该前缀的页面。
调整后可正常运行的脚本
Given driver 'https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_win_open' Then maximize() When switchFrame('#iframeResult') * print 'driver.url before switch----------------', driver.url And highlight("{}Try it") And click("{}Try it") * delay(2000) # 切回顶层frame And switchFrame() # 用部分匹配命中目标页面 And switchPage('contains:https://www.w3schools.com') * delay(2000) * print 'driver.url after switch----------------', driver.url * highlight("//a[@href='https://www.w3schools.com ']") * delay(5000)
如果调整后仍有疑问,可以先调用driver.getPageUrls()打印所有已打开标签页的URL列表,确认目标页面的URL是否符合匹配规则。
内容的提问来源于stack exchange,提问作者SUBRAMANIA SIVA
相关产品推荐
相关产品推荐

