如何在Selenium IDE中查找定位iframe内部的页面元素
Selenium IDE 查找iframe内部元素的操作方法
浏览器会将iframe作为独立的文档上下文做隔离,Selenium默认仅在顶层页面DOM范围内查找元素,不会自动穿透iframe,必须显式切换操作上下文才能访问iframe内的元素,具体操作方法如下:
操作步骤
- 新增iframe切换步骤
在你原有verify element present步骤之前,插入一条select frame命令,定位器填写目标iframe的选择器。你当前场景下iframe带有固定classAAKXAC-wnd-ThirdPartyComponent,直接用css=.AAKXAC-wnd-ThirdPartyComponent作为定位器即可,稳定性最高,不要用动态变化的src属性做定位。 - 执行原有元素校验步骤
完成frame切换后,再执行原有verify element present步骤,定位器填写css=.mainContainer即可正常识别到iframe内部的元素。
常见注意事项
- 如果iframe为动态加载,需要在
select frame步骤前新增wait for element visible步骤,定位器同样使用css=.AAKXAC-wnd-ThirdPartyComponent,避免iframe未加载完成就执行切换导致报错。 - 完成iframe内的操作后,如果需要回到顶层页面操作其他元素,可新增
select frame命令,定位器填relative=parent即可切回上一层上下文,填relative=top可直接切回最顶层页面。
对应页面结构参考
<iframe allowfullscreen="" class="AAKXAC-wnd-ThirdPartyComponent" src="https://xxx.g0.nr-ext.net/#xxx"> #document <html> <body> <div id="root"></div> </body> </html> </iframe>
iframe的上下文隔离是浏览器同源安全策略的默认行为,和页面是否接入New Relic没有关联。
内容的提问来源于stack exchange,提问作者Husdady
相关产品推荐
相关产品推荐

