一、切换标签
1、首先需要取到当前浏览器打开了几个句柄
语法
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()
wait = WebDriverWait(driver, 2)
wait.until(expected_conditions.new_window_is_opened(handlerAll))
driver.switch_to.window(driver.window_handles[-1])
二、切换iframe
1、使用以下其中一种方法找到iframe
例如:
driver.switch_to.frame(0)
driver.switch_to.frame('login')
iframe = driver.find_element('name', 'login')
driver.switch_to.frame(iframe)
2、退回主页面
例如:
driver.switch_to.default_content()
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')
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
myAlert = driver.find_element('id', 'login')
wait = WebDriverWait(driver, 2)
wait.until(expected_conditions.alert_is_present())