Frame是HTML框架结构常用的一种布局格式,共有三种形式:frameset、frame及iframe。
1、Frameset:将HTML页面分割,可以嵌入多个HTML源码文件,实现单个页面显示不同HTML页面效果,不能嵌入在BODY标签中。
2、Frame:在Frameset下面设置Frame,实现某个框架页面,必须嵌套在Frameset中,无法单独存在。
3、Iframe:在某个页面嵌入一个HMTL窗口信息,可脱离Frameset应用,框架属性有自己定义。
Frameset在分割页面后,可以由Frame和iframe嵌入页面信息,Frame仅能在Frameset中应用,Iframe则无此限制。
Frameset与HTML其他标签相同,不影响正常的元素定位,但frame及iframe则不同,在定位元素过程中,需先定位frame及iframe。
01 单层frame
单层frame在定位时,需先切换到对应的frame中,利用switch_to.frame(reference)语法进行切换。Reference为需切换的frame的id、name或index等。
如以下frame框架代码:
则切换frame代码如下:
如果frame没有id或name,则可以索引值,也可以利用先查找webelement对象再切换frame的方法进行,查找web element可利用find element方式。
02 嵌套frame
当某个frame中嵌套了其他的frame时,切换frame则需以嵌套结构逐层切换,例如:
上述的html中frame1中嵌套了frame2,如果需要定位frame2中的元素,则切换frame应当逐层切换,如:
当切换到frame2进行操作后,如果需返回到frame1,则可利用以下方法:
返回上一层frame中,类似于回退效果,当上一层是主文档时,该方法无效。
03 回退主frame
切到某个具体的frame中之后,Selenium不能定位主文档中的元素,如果想定位主文档的元素,则需切回主文档。可利用以下方法:
版权归原作者 是酱酱呀 所有, 如有侵权,请联系我们删除。