【UI自动化】Selenium如何实现窗口切换

1. 获取当前窗口句柄

首先,你需要获取当前窗口的句柄,以便在需要时可以切换回它。你可以使用 driver.current_window_handle 来获取当前窗口的句柄。

current_window = driver.current_window_handle

2. 获取所有窗口句柄

当你打开一个新的窗口或标签页时,你需要获取所有窗口的句柄,以便你可以切换到新打开的窗口。你可以使用 driver.window_handles 来获取所有窗口的句柄列表。

all_windows = driver.window_handles

3. 切换到新窗口

一旦你有了所有窗口的句柄,你就可以遍历它们,找到你想要切换到的窗口,并使用 driver.switch_to.window() 方法来切换窗口。

for window in all_windows:
    if window != current_window:
        driver.switch_to.window(window)
        break

示例:在新标签页中打开链接并切换

下面是一个完整的示例,演示如何在新标签页中打开一个链接,并切换到新标签页。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
​
# 启动浏览器
driver = webdriver.Chrome()
​
# 打开一个网页
driver.get("https://example.com")
​
# 获取当前窗口句柄
current_window = driver.current_window_handle
​
# 找到并打开一个新链接在新标签页
link = driver.find_element_by_link_text("Some Link")
link.send_keys(Keys.CONTROL + Keys.RETURN)  # 在新标签页打开链接(Windows/Linux)
# 对于 MacOS,使用: link.send_keys(Keys.COMMAND + Keys.RETURN)
​
# 获取所有窗口句柄
all_windows = driver.window_handles
​
# 切换到新窗口
for window in all_windows:
    if window != current_window:
        driver.switch_to.window(window)
        break
​
# 现在你可以在新窗口中执行操作了
​
# 不要忘记关闭浏览器
driver.quit()

注意:

  • 上述代码中的 link.send_keys(Keys.CONTROL + Keys.RETURN) 是在新标签页中打开链接的方法,但这种方法并不总是可靠的。有时候,你可能需要使用 JavaScript 来实现这一功能。

  • 当你完成在新窗口中的操作后,你可能还想切换回原来的窗口。你可以使用之前保存的 current_window 句柄来实现这一点。

driver.switch_to.window(current_window)
  • 在写代码时,请确保正确处理异常和错误,以便在出现问题时能够优雅地关闭浏览器。

你可能感兴趣的:(UI自动化,自动化,selenium,运维,UI自动化,软件测试,自动化测试)