在页面操作时,有时需要打开新的窗口链接,需要切换到新的窗口进行操作,
webdriver提供了switch_to.window()方法,可以实现不同窗口间的切换
多窗口切换
switch_to.window()方法可以实现不同的窗口间的切换
current_window_handle:获得当前窗口句柄
window_handles:返回所有窗口的句柄到当前会话
switch_to.window():切换对应的窗口
以百度首页和账号注册页为例:
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(10) # 隐式等待10s
driver.get("http://www.baidu.com")
# 获得百度搜索窗口句柄
search_windows = driver.current_window_handle
driver.find_element_by_link_text("登录").click()
driver.find_element_by_link_text("立即注册").click()
# 获取当前所有打开的窗口句柄
all_handles = driver.window_handles
# 进入注册窗口 for handle in all_handles: if handle != search_windows: driver.switch_to.window(handle) # 切换到注册窗口 print(driver.title) # 打印标题 driver.find_element_by_name("userName").send_keys("username_4578") driver.find_element_by_name("phone").send_keys("13811111111") time.sleep(2) # driver.find_element_by_name("password").send_keys("123456") # driver.find_element_by_name("verifyCode").send_keys("xxxx") # 关闭当前窗口 driver.close()
# 回到搜索窗口 driver.switch_to.window(search_windows) print(driver.title) driver.quit()
方法二:获取所有句柄,利用列表索引
all_handle=driver.window_handles()
driver.switch_to.window(all_handle[1])