📌  相关文章
📜  getwindowhandle 和 getwindowhandles (1)

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

getWindowHandle 和 getWindowHandles

在编写 Web 自动化测试脚本时,有时我们需要操作浏览器的多个窗口。这时,就需要使用 getWindowHandlegetWindowHandles 方法来获取和管理窗口句柄。

getWindowHandle 方法

getWindowHandle 方法用于获取当前浏览器窗口的句柄。句柄是一个唯一的标识符,用于标识浏览器中的每个窗口。通常情况下,我们只能同时操作一个浏览器窗口,所以 getWindowHandle 方法返回的是一个字符串,表示当前活动窗口的句柄。

String handle = driver.getWindowHandle();
getWindowHandles 方法

getWindowHandles 方法用于获取当前浏览器中所有窗口的句柄。该方法返回一个句柄的集合,每个句柄都表示一个窗口。如果有多个窗口打开,则可以使用 getWindowHandles 方法来获取所有窗口的句柄。

Set<String> handles = driver.getWindowHandles();
示例

下面是一个示例,演示如何使用 getWindowHandlegetWindowHandles 方法来处理多个浏览器窗口:

// 获取当前窗口的句柄
String parentHandle = driver.getWindowHandle();

// 打开新的窗口
driver.findElement(By.linkText("Open New Window")).click();

// 获取所有窗口的句柄
Set<String> handles = driver.getWindowHandles();

// 切换到新打开的窗口
for (String handle : handles) {
    if (!handle.equals(parentHandle)) {
        driver.switchTo().window(handle);
        break;
    }
}

// 在新窗口中进行操作
driver.findElement(By.id("username")).sendKeys("username");
driver.findElement(By.id("password")).sendKeys("password");
// ...

// 切换回原来的窗口
driver.switchTo().window(parentHandle);

// 继续在原窗口中进行操作
// ...

在上述示例中,通过 getWindowHandle 方法获取了当前窗口的句柄,并使用 getWindowHandles 方法获取了所有窗口的句柄。然后通过遍历窗口句柄,切换到新打开的窗口,并在新窗口中进行操作。最后,再切换回原来的窗口,继续在原窗口中进行操作。

注意,getWindowHandles 方法返回的窗口句柄集合是无序的,因此可能需要根据实际情况来选择需要操作的窗口。

总结

getWindowHandlegetWindowHandles 方法是处理多个浏览器窗口时非常有用的工具。通过这些方法,我们可以获取和管理窗口句柄,实现在多个窗口之间的切换和操作。在编写 Web 自动化测试脚本时,务必熟练掌握这两个方法的用法,以便更好地处理多窗口情况。