selenium的三大窗口切换分别是:Windows窗口切换、iframe切换,alter切换python
一、Windows窗口切换web
windows窗口用句柄来惟一标识,因而能够采用获取句柄的方法来切换窗口。windows
selenium提供了switch_to.window()的方法来切换窗口,里面传入句柄的值,便可切换到对应的窗口网站
首先要获取窗口句柄,使用driver.window_handles获取全部句柄,存放在一个列表中,而后根据下标进行切换(下标从0开始,最后一个也能够用-1表示)spa
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 driver = webdriver.Chrome() driver.get("https://www.baidu.com") driver.implicitly_wait(10) # 在百度输入框输入“微博”,点击查询 driver.find_element_by_xpath("//input[@id='kw']").send_keys('微博') driver.find_element_by_xpath("//input[@id='su']").click() # 点击查询结果中的第一条内容 loc = (By.XPATH,"//div[@id='1']/h3[@class='t']/a/em") # 显性等待 WebDriverWait(driver,10).until(EC.presence_of_element_located(loc)) driver.find_element(*loc).click() # 获取当前全部窗口的句柄 windows = driver.window_handles print(windows) #切换窗口 driver.switch_to.window(windows[-1])
二、iframe切换对象
不少网站咱们在点击一个按钮后会弹出一个新的窗口进行数据填写,这些窗口不少都是iframe窗口,若是不先切换到对应的iframe,是没法对其中的元素进行操做的blog
iframe的切换方式:switch_to.frame()-----这个括号中的能够填iframe的下标,从0开始driver.switch_to.frame(2)索引
------括号中的内容能够填iframe的id或name,driver.switch_to.frame("name")ci
-------括号中还能够是元素对象,driver.switch_to.frame(driver.find_element_by_name(''))element
例以下面这个iframe,它没有对应的id和name值,除了能够根据索引定义外,还能够根据它的class对象定位driver.switch_to.frame(driver.find_element_by_class_name('iframeclass'))
三、alter切换
什么是alter窗口呢?就是系统弹出的提示框
对于这种alter无非就是肯定操做,取消操做,获取界面文本
al = driver.switch_to.alert
al.text # 获取文本
al.dismiss() # 取消
al.accept() # 肯定