📜  getwindowhandle vs getwindowhandles (1)

📅  最后修改于: 2023-12-03 14:41:23.978000             🧑  作者: Mango

getwindowhandle vs getwindowhandles

在编写自动化测试脚本时,我们经常需要操作弹出窗口或新开的标签页。为了实现这个功能,我们需要使用WebDriver API中的getwindowhandlegetwindowhandles方法。这两个方法可以获取当前窗口或标签页的句柄,从而可以切换到其他窗口或标签页。

getwindowhandle

getwindowhandle方法返回当前窗口的句柄。在使用这个方法之前,我们需要先调用driver.get()方法或driver.navigate().to()方法打开一个网页。

下面是一个使用getwindowhandle方法的示例代码:

# 导入WebDriver和Keys类
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# 创建ChromeDriver对象
driver = webdriver.Chrome()

# 打开百度网页
driver.get("https://www.baidu.com")

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

# 输出当前窗口句柄
print(current_window)

# 关闭浏览器
driver.quit()

在这个示例中,我们首先创建了一个ChromeDriver对象,然后打开了百度网页。接着使用current_window_handle属性获取当前窗口的句柄,并把它赋给变量current_window。最后,我们打印出了当前窗口的句柄。

getwindowhandles

getwindowhandles方法返回所有窗口的句柄。这个方法和getwindowhandle方法的区别在于它可以返回多个窗口的句柄,我们可以通过循环切换到这些窗口。

下面是一个使用getwindowhandles方法的示例代码:

# 导入WebDriver和Keys类
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# 创建ChromeDriver对象
driver = webdriver.Chrome()

# 打开百度网页
driver.get("https://www.baidu.com")

# 在百度页面上搜索“selenium”
search_box = driver.find_element_by_name("wd")
search_box.send_keys("selenium")
search_box.send_keys(Keys.RETURN)

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

# 使用循环切换到其他窗口
for window in all_windows:
    driver.switch_to.window(window)
    print(driver.current_url)
    # 对每个窗口执行操作

# 关闭浏览器
driver.quit()

在这个示例中,我们打开了百度网页,并在搜索框中输入了“selenium”进行搜索。接着使用window_handles属性获取所有窗口的句柄,并把它赋给变量all_windows。最后,我们使用循环遍历所有窗口,并在每个窗口执行一些操作。

总之,getwindowhandlegetwindowhandles方法是非常有用的,它们可以帮助我们在自动化测试中处理多个窗口或标签页。在编写自动化测试脚本时,我们应该灵活使用这两个方法,以完成各种复杂的操作。