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


我们可以使用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")
# to maximize the browser window
driver.maximize_window()
#get method to launch the URL
driver.get("https://the-internet.herokuapp.com/windows")
#to refresh the browser
driver.refresh()
driver.find_element_by_link_text("Click Here").click()
#prints the window handle in focus
print(driver.current_window_handle)
#to fetch the first child window handle
chwnd = driver.window_handles[1]
#to switch focus the first child window handle
driver.switch_to.window(chwnd)
print(driver.find_element_by_tag_name("h3").text)
#to close the browser
driver.quit()

更新于: 2020年7月29日

3K以上浏览量

开启您的 职业

完成课程认证

开始
广告