iframe指的是页面中又嵌套了另一个页面,或者说是一个HTML结构中又嵌套了另外一个完整的HTML结构,一般用于展示来自第三方的资源,比如广告位、地图、或者第三方的文本编辑器。
iframe在页面中还是挺普遍的,所以在我们做自动化时,几乎每个工程师都会遇到对iframe的处理。一般在自己的CSS表达式或Xpath表达式写的特别正确但就是操作不到元素时,很可能就是遇到了iframe,这是我们就要切换到iframe内部再进行后续操作。
切换时,如果iframe有id或name属性那就好办,但是如果没有,我们还可以根据iframe在页面中的索引号进行切换,但是这个时候往往有一个问题困扰我们:这个页面上到底有多少个iframe,我要操作的iframe究竟是第几个?
今天我来教大家一个独门秘籍:使用Try Xpath这个火狐的小插件来判断!
Try Xpath的安装就不介绍了,大家可以看我的另一篇文章,FireBug不能用了?使用火狐Try Xpath插件替代Firebug和Firepath
判断iframe的具体步骤如下:
1. 先在火狐中打开你的页面
例:http://the-internet.herokuapp.com/tinymce
2. 调出Try Xpath小工具
3. 勾选Try Xpath工具中的frameId复选框,点击“Get all frameid”按钮
4. 点击“Get all frameid”按钮之后,展开此按钮右侧的Manual下拉列表
列表里面就告诉了你当前页面有多少个iframe,下拉选项的“0”不作为计数,下拉选项中一长串的数字做为计数,所以本例中整个页面中就只有一个iframe。
5. 输入frameid,点击“Focus frame”按钮
想要知道你想操作的iframe是第几个?只需要把下拉选项中看到的那一长串数字(frameId),输入到下面的frameid输入框中(这里当前只能手工输入),再点击下面的“Focus frame”按钮,Try Xpath就会把这个id号对应的iframe在页面上用粉色的虚线框出来。
如果不是你想操作的iframe的话,就再试另第一个(id号一般是奇或偶连续的数),直到试出你想操作的iframe。
6. 试出你想操作的iframe后,再看它在步骤4列表中的排名,记得按索引号的话,是从0开始的。
这样你就找出页面上总共有多少个iframe,你要操作的iframe对应的索引号是多少了。
注:对于比较复杂的iframe内又嵌套iframe,或者页面iframe太多的时候,此方法就不太适用了。
****************************************************************************************************
最近我会持续更新Selenium Java的相关文章,也请大家多多关注我的视频课程
*****************************************************************************************************