如何在 Python 中使用 Selenium 处理子窗口?

selenium web driverautomation testingsoftware testing

我们可以在 Selenium 中处理子窗口或标签页。使用子窗口时,我们需要始终将浏览器焦点转移到子窗口,然后再对它们执行操作。

默认情况下,焦点会停留在第一个父窗口上。

Selenium 中提供了多种方法,如下所示 −

  • current_window_handle

    此方法获取当前窗口的句柄。

语法 −

driver.current_window_handle
  • window_handles

    此方法获取所有当前打开窗口的句柄 ID。

语法 −

driver.window_handles
w = driver.window_handles[2]

以上代码返回当前打开的第二个窗口的句柄 ID。

会话。

  • switch_to.window(args)

    此方法将 Selenium 的焦点切换到参数中指定的窗口名称。

语法 −

driver.switch_to.window(childwindow)

以上代码将焦点切换到子窗口句柄。

示例

使用子窗口的代码实现。

from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:\chromedriver.exe")
# 最大化浏览器窗口
driver.maximize_window()
# 获取 URL 的方法
driver.get("https://the-internet.herokuapp.com/windows")
# 刷新浏览器
driver.refresh()
driver.find_element_by_link_text("点击这里").click()
# 打印当前焦点窗口句柄
print(driver.current_window_handle)
# 获取第一个子窗口句柄
chwnd = driver.window_handles[1]
# 切换焦点到第一个子窗口句柄
driver.switch_to.window(chwnd)
print(driver.find_element_by_tag_name("h3").text)
# 关闭浏览器
driver.quit()

相关文章