前言: 最近在做UI自动化测试的时候,遇到了一个问题,使用元素定位,怎么都定位不到元素,最后排查下来发现,是因为网页中嵌套了iframe页面,定位的元素在iframe中,所以需要先定位到iframe元素,然后再定位嵌套内的元素才行。
在我们日常工作当中,经常有各种复杂的页面,本篇总结两个比较常用的场景。
本篇是使用MeterSphere的方式去定位。关于MeterSphere详细信息,请查看官网网站
一、需要定位iframe中元素
- 我们就以网易云为例子,模拟一个打开页面,查询华语歌曲的场景。
最终效果:
1.1 流程分析
第一步:打开网易云
第二部:点击”华语“按钮
通过F12分析查看,
”华语“链接在iframe页面里面,所以,当我们直接定位”华语“链接是定位不到的。
如图:
就会报错,找不到元素。所以我们需要先定位iframe,然后再定位”华语“
1.2 正确操作
如上图所示
- 选择“浏览器操作”
- 选择“内嵌网页”
- 选择“根据定位方式切换iframe”
- 定位要定位的iframe元素
1.3 结果
我们点开截图,可以看到,正是我们所需要的效果。
二、需要定位新窗口元素
- 我们以淘宝为例子,模拟打开一个新窗口登录的场景。
最终效果:
会弹出新窗口,填写登录信息。
2.1 流程分析
- 访问淘宝地址
- 点击某个类目,会跳转一个新的窗口。
- 切换新窗口,填写账号信息。
2.2 正确操作
按照正常的步骤,我们添加一个切换窗口的操作。
- 选择“浏览器操作”
- 选择“切换窗口”
- 选择“根据网页索引号切换到指定窗口”
- 填写网页索引号
2.3 结果
根据以上操作,可以查看所需结果是正确的。
三、总结
- 以上是我们日常工作中比较常见的两种场景:
- iframe嵌套定位
- 新窗口定位
- MeterSphere的底层实现也是Selenium为工具实现的,所以我们只需要按照Selenium的操作即可。