web自动化之iframe页面切换

一、切换方式
原理:页面会进行一层一层的嵌套,只有切换到嵌套的页面,才可以定位到页面里的标签属性等,一般情况不会超过三层,通常最多一层,可能的话有平行的 。
【web自动化之iframe页面切换】# 1、通过name属性进行定位,前提是iframe有name属性driver.switch_to.frame("login_frame")# 2、通过iframe索引去切换,注意iframe层级关系driver.switch_to.frame(1)# 3、通过元素去定位,先找到要定位的iframe元素,然后再作为参数传入iframe = driver.find_element("xpath","//iframe[@id='login_frame']")driver.switch_to.frame(iframe)# 扩展:# 关于进入iframe页面怎么退回到主页面driver.switch_to.default_content()# 关于进入iframe页面怎么退回到父级的iframedriver.switch_to.parent_frame()
二、代码示例

web自动化之iframe页面切换

文章插图
"""举例:已QQ邮箱为例"""import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("https://mail.qq.com/")driver.maximize_window()# 1、通过name属性进行定位,前提是iframe有name属性# driver.switch_to.frame("login_frame")# 2、通过iframe索引去切换,注意iframe层级关系# driver.switch_to.frame(1)# 3、通过元素去定位,先找到要定位的iframe元素,然后再作为参数传入【常用】iframe = driver.find_element("xpath","//iframe[@id='login_frame']")driver.switch_to.frame(iframe)# 点击账号密码登录driver.find_element("xpath","//a[text()='帐号密码登录']").click()# 输入账号driver.find_element(By.ID,"u").send_keys("username")# 输入密码driver.find_element(By.ID,"p").send_keys("password")# 点击登录driver.find_element("xpath","//input[@id='login_button']").click()# 强制等待5stime.sleep(5)# 退出浏览器driver.quit()