切换分为1)windows切换 2)iframe切换
drivere.switch_to.window/frame
1.什么情况下需要窗口切换?
1)页面的操作,打开了一个新的窗口,你需要在新的窗口当中,去进行下一步操作 2) 页面当中又iframe,并且要进入iframe去进行下一个操作 2.怎么知道要切换到 哪个窗口?代码如何知道哪个窗口时新的窗口?
1)得到目前打开的所有窗口--句柄 每一个窗口都又一个句柄 列表 ----欠货出现 先出现的,先追加到刘表,最新的窗口,在列表的最后,最先打开的窗口,在列表的第一个
获取所有句柄:wins=driver_handles
2)切换到新窗口 driver.switch_to.window(wins[-1])
等待新的窗口出现
iframe:
1)定位iframe:下标/name属性/webElement对象
2)切换:driver.switch_to.frame()
等待iframe可见 time.sleep(1)
二.iframe切换
什么情况需要iframe切换?
需要操作的元素在iframe种
1.识别元素是否在iframe,F12
2.切换:1)切换到哪个iframe? iframe时标签对,是当前默认html的一个元素
腾讯课堂的QQ登录页面为例 //iframe[@name="login_frame_qq"]
driver.switch_to.frame()
支持3种方式来确定切换到哪一个iframe
1)从iframe下标 ,从0开始,driver.switch_to.frame(3)
2)iframe元素的name属性 driver.switch_to.frame("login_frame_qq")
3)iframe这个webelement元素,driver.swich_to.frame(driver.find_element_by_xpath('//iframe[@name="login_frame_qq"])
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
#element=driver.find_element_by_id("kw")
#1)进入又iframe的页面
#操作到又iframe的页面当中,并接下来的步骤,是在iframe中找到元素并操作
#2)切换
driver.switch_to.frame("login_frame_qq")
#3)在iframe当中的html了
#4)回到默认的hrml页面内中,退出iframe
driver.switch_to.default_content()
#5)回到上一级的iframe
driver.switch_to.parent_frame()