📅  最后修改于: 2023-12-03 14:41:23.978000             🧑  作者: Mango
在编写自动化测试脚本时,我们经常需要操作弹出窗口或新开的标签页。为了实现这个功能,我们需要使用WebDriver API中的getwindowhandle
和getwindowhandles
方法。这两个方法可以获取当前窗口或标签页的句柄,从而可以切换到其他窗口或标签页。
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
方法返回所有窗口的句柄。这个方法和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
。最后,我们使用循环遍历所有窗口,并在每个窗口执行一些操作。
总之,getwindowhandle
和getwindowhandles
方法是非常有用的,它们可以帮助我们在自动化测试中处理多个窗口或标签页。在编写自动化测试脚本时,我们应该灵活使用这两个方法,以完成各种复杂的操作。