📜  如何在Selenium for Python切换到新窗口?(1)

📅  最后修改于: 2023-12-03 15:24:36.211000             🧑  作者: Mango

如何在Selenium for Python切换到新窗口?

在使用Selenium for Python进行Web自动化测试时,经常会遇到需要切换到新窗口的情况。本文将介绍如何使用Selenium for Python切换到新窗口。

Step 1 获取当前窗口句柄

在切换到新窗口之前,我们需要获取当前窗口的句柄。可以使用current_window_handle方法获取当前窗口句柄,如下所示:

current_handle = driver.current_window_handle
Step 2 获取所有窗口句柄

使用window_handles方法可以获取所有窗口的句柄,如下所示:

all_handles = driver.window_handles
Step 3 切换到新窗口

找到需要切换的新窗口句柄后,使用switch_to.window()方法可以切换到该窗口,如下所示:

for handle in all_handles:
    if handle != current_handle:
        driver.switch_to.window(handle)

在上面的代码中,我们使用了一个for循环来遍历所有窗口句柄,如果句柄不等于当前窗口的句柄,则切换到该窗口。

完整代码示例
# 导入Selenium库
from selenium import webdriver

# 创建一个Chrome浏览器实例
driver = webdriver.Chrome()

# 打开网站
driver.get('http://www.baidu.com/')

# 获取当前窗口句柄
current_handle = driver.current_window_handle

# 打开新窗口
driver.execute_script("window.open('http://www.qq.com/')")

# 获取所有窗口句柄
all_handles = driver.window_handles

# 切换到新窗口
for handle in all_handles:
    if handle != current_handle:
        driver.switch_to.window(handle)

# 在新窗口中操作
print(driver.title)

# 切换回旧窗口
driver.switch_to.window(current_handle)

# 在旧窗口中操作
print(driver.title)

# 关闭所有窗口
driver.quit()

在上面的代码中,我们首先打开了一个百度网站的窗口,然后使用JavaScript打开了一个QQ网站的窗口,并获取了所有窗口的句柄。最后,我们使用switch_to.window()方法切换到了新打开的QQ网站窗口,并在该窗口中打印了页面标题。接着,我们又使用switch_to.window()方法切换回了旧的百度网站窗口,并在该窗口中打印了页面标题。最后,我们关闭了所有窗口。

以上就是使用Selenium for Python切换到新窗口的方法。