微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

selenium之iframe及切换

iframe是什么?
iframe就是我们常用的iframe标签:<iframe>。
iframe标签是框架的一种形式,也比较常用到,iframe一般用来包含别的页面,如在我们自己的网站页面加载别人网站或者本站其他页面内容

在selenium中,如果要对iframe中的元素进行操作,则需要切换至iframe后才能对其内的元素进行操作。

1、切换至iframe
要想切换至iframe有两步:
a,先定位到iframe元素
b,切换至iframe:switch_to.frame(iframe元素)
tips:看到switch_to.iframe是不是和切换至弹窗很相似?联合起来记忆效果更好哦
我们看126邮箱的登录页:

 

 126邮箱登录页,要想输入账号密码,需要切换至iframe后才能输入

 

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Firefox()
# 打开126邮箱首页
driver.get("https://www.126.com/")
# 定位账号密码输入框所在的iframe
iframe_ele = driver.find_element(By.CSS_SELECTOR, "div#loginDiv>iframe")
# 切换至iframe
driver.switch_to.frame(iframe_ele)
# 定位置账号输入框,并输入账号
driver.find_element(By.CSS_SELECTOR, "div.u-input>input[name='email']").send_keys("leo")

 

执行结果:

 

 如果我们去掉上面示例代码中切换至iframe的代码,将会是什么结果呢?
如果不切换至iframe,定位iframe中的元素会报错,抛出:NoSuchElementException异常。将无法定位到元素。


二、切换至主页面
当我们要从iframe中切换回来时,可以调用swicth_to.default_content()
从上面的例子,我们输入完账号后,想点击页面logo,如下图:

 

 代码如下:

from selenium import webdriver、
from selenium.webdriver.common.by import By

driver = webdriver.Firefox()
# 打开126邮箱首页
driver.get("https://www.126.com/")
# 定位账号密码输入框所在的iframe
iframe_ele = driver.find_element(By.CSS_SELECTOR, "div#loginDiv>iframe")
# 切换至iframe
driver.switch_to.frame(iframe_ele)
# 定位置账号输入框,并输入账号
driver.find_element(By.CSS_SELECTOR, "div.u-input>input[name='email']").send_keys("leo")
# 切回至主页面
driver.switch_to.default_content()
# 定位logo
driver.find_element(By.CSS_SELECTOR, "div.header-126logo")

 

总结:
切换至iframe:driver.switch_to.frame(iframe元素)。
切回至主页面:driver.switch_to.default_content()。




 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐