selenium常用操作之iframe操作

我只是一个虾纸丫 提交于 2020-03-12 19:12:34

iframe:一个网页里面嵌套了另一个框架/页面,即在一个HTML页面中还内嵌了另外一个HTML页面,只不过这个内嵌的HTML是放在</frame></iframe>标签对中。

在python3.8中对应的selenium提供了两种方法来获取iframe中的内容:

方式一:driver.switvh_to.frame(frame_reference)

语法:

driver.switch_to.frame(iframe的name属性或webelement对象或下标)

示例:

driver.switch_to.frame(“login_frame_qq”)#切换到name为login_frame_qq的iframe中driver.switvh_to.frame(0)#切换到第一个iframe中driver.switch_to.frame((By.xpath,"//div[@class="ptlogin_wrap"]))

 方式二:frame_to_be_available_and_switch_to_it(frame_reference)

在前面的selenium常用操作之等待操作中我们有介绍过,expected_conditons模块中提供的方法。

此方法会判断iframe是否可用,并且会自动切换到iframe中。

frame_reference的值与方式一保持一致。

示例:

from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import By
WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it(iframe_name))

  

当页面中iframe中还有iframe时,假如此时我们想进入二级iframe,则需要先进入一级iframe,再进入二级iframe。

#iframeId为一级iframe的id
driver.switch_to_frame("iframeId")
#iframeId下有两个并列的iframe,但是他们没有id和name,此时我们可以通过tag_name获取
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[1])

这样我们就进入了一级iframeId下的iframe了!

 

selenium跳出iframe

①从二级iframe跳到一级iframe,即跳到父级:

driver.switchTo().parentFrame();#或者
driver.switch_to.parent_frame()

②从iframe跳到主窗口

driver.switch_to_default_content()#或者
driver.switch_to.default_content()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!