一、切换标签

1、首先需要取到当前浏览器打开了几个句柄
语法
# 返回一个数组,元素为句柄id handles = driver.window_handles
2、使用 switch_to.window() 方法进行切换
例如:
# 切换到最后一个标签 driver.switch_to.window(driver.window_handles[-1])
3、获取当前句柄
语法
handles = driver.current_window_handle
4、在切换时需加上显性等待,以避免标签未切换先执行了后期代码
例如:
from selenium.webdriver.support import WebDriverWait from selenium.webdriver.support import expected_conditions # 首先获取所有句柄 handlesAll = driver.window_handles # 点击打开新标签 driver.find_element('id', 'login').click() # 初始化 ActionChains wait = WebDriverWait(driver, 2) # 显性等待,等待窗口出现 wait.until(expected_conditions.new_window_is_opened(handlerAll)) # 等待完成后需要手动切换 driver.switch_to.window(driver.window_handles[-1])

二、切换iframe

1、使用以下其中一种方法找到iframe
例如:
# 可使用索引index进行查找iframe driver.switch_to.frame(0) # 可使用name值进行查找iframe driver.switch_to.frame('login') # 可使用iframe的webelement对象进行查找iframe iframe = driver.find_element('name', 'login') driver.switch_to.frame(iframe)
2、退回主页面
例如:
# 退回主页面 driver.switch_to.default_content() # 退回父级iframe driver.switch_to.parent_frame()
3、在切换时需加上显性等待,以避免标签未切换先执行了后期代码
例如:
from selenium.webdriver.support import WebDriverWait from selenium.webdriver.support import expected_conditions # 首先获取所有句柄 handlesAll = driver.window_handles # 点击打开新标签 iframe = driver.find_element('id', 'login') # 初始化 ActionChains wait = WebDriverWait(driver, 2) # 显性等待,等待窗口出现 wait.until(expected_conditions.frame_to_be_available_and_switch_to_it(iframe)) # 等待完成后会自动切换

三、切换alert

1、使用 alert 方法切换
例如:
myAlert = driver.switch_to.alert # 确定 myAlert.accept() # 取消 myAlert.dismiss()
2、在切换时需加上显性等待,以避免标签未切换先执行了后期代码
例如:
from selenium.webdriver.support import WebDriverWait from selenium.webdriver.support import expected_conditions # 获取alert对象 myAlert = driver.find_element('id', 'login') # 初始化 ActionChains wait = WebDriverWait(driver, 2) # 显性等待,等待窗口出现 wait.until(expected_conditions.alert_is_present()) # 等待完成后会自动切换