iframe定位问题

时间:2024-03-15 21:08:26

iframe是什么,其实就是页面重新再次嵌套了一个网页,iframe里面一样有html开始结束标签,然后有title,body,就是网页里面套网页,那么selenium操作浏览器只是对当前页面进行操作,那么既然iframe是一个网页,那么要对这进行操作,那么就需要先进入这个网页才可以,

打开浏览器时,默认在主文档里面, 那么只能查找主文档里面的元素, 子iframe里面的元素不能查找

selenium提供了三种切换iframe的方法:切换到直接父iframe 切换到子iframe中, 切换到主文档

frame的切换问题

1.有id,并且唯一(相对主文档),直接写id

driver.switch_to.frame("iframe的id或者name")

2.无id,无name,先定位iframe元素,可以用其他方式先定位元素,然后再跳转,如果iframe比较多,也是可以通过索引

iframe = driver.find_element_by_*("iframe")[0]

driver.switch_to.frame(iframe)

 

退出iframe:

# 第一种方式:跳出所有iframe,回到主界面,即是跳回最外层页面。

driver.switch_to_default_content(),方法不用传参,默认跳到最外层

# 第二种方式:如果进入了多层frame,我们只是想回到上一个frame,可以用

driver.switch_to.parent_frame(),方法不用传参,因为只有一个父亲

备注:

iframe进入一个页面,操作了页面的一个取消按钮,这个iframe关闭了,那么要操纵外面的父iframe,是需要手动跳出的,不会自动跳出的,不要以为页面关闭了,就自动跳出了,不会的,

通俗易懂的方式理解iframe

如果网页比作我们买的单元房,那么三室一厅的房子,有主卧,次卧,小卧室分别为iframe,

iframe就是里面的一个小房子,现在要去小房子找东西,人在客厅里面,要先进入到小房子里面,才能找,如果要找次卧房子里面的东西,那么就要先从小房间里面出来,到次卧厅里面找

iframe定位问题