1.多表单切换
driver.switch_to.frame(login_frame)# switch_to.frame()默认可以直接对表单的id或name属性传参 driver.switch_to.default_content() # 回到最外层页面
2.多窗口切换
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()