selenium自动化多窗口切换

在页面操作时,有时需要打开新的窗口链接,需要切换到新的窗口进行操作,

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])

 
 
原文地址:https://www.cnblogs.com/zhifeiji822/p/13066205.html