Selenium 的 WindowHandles
用于可靠的多窗口/选项卡管理
有效管理多个浏览器窗口和选项卡对于健壮的 Web 应用程序测试至关重要。 Selenium 的 WindowHandles
提供了这种控制,但其迭代顺序(基于 GUID 的存储)固有的不可预测性带来了挑战。
一个常见的问题是循环WindowHandles
时顺序不一致。这使得定位特定选项卡或窗口变得困难。
解决方案涉及将 WebDriverWait
与创建新窗口/选项卡时的实时句柄收集相结合。这确保了更新的 WindowHandles
列表,从而实现可靠的迭代和切换。
这是一个展示此技术的 Java 示例:
<code class="language-java">WebDriver driver = new InternetExplorerDriver(); driver.get("http://www.google.com"); String firstTab = driver.getWindowHandle(); ((JavascriptExecutor) driver).executeScript("window.open('http://facebook.com/');"); WebDriverWait wait = new WebDriverWait(driver, 5); wait.until(ExpectedConditions.numberOfWindowsToBe(2)); Set<String> handles = driver.getWindowHandles(); Iterator<String> iterator = handles.iterator(); while (iterator.hasNext()) { String currentTab = iterator.next(); if (!firstTab.equalsIgnoreCase(currentTab)) { driver.switchTo().window(currentTab); System.out.println("Now working on Facebook"); } }</code>
此代码:
firstTab
中。WebDriverWait
确保在继续之前打开两个窗口。WindowHandles
集。这种方法适用于 Python 等其他语言。 此方法保证了 Selenium 测试中浏览器窗口和选项卡的一致且可靠的管理。
以上是如何使用Selenium的WindowHandles可靠地通过多个浏览器窗口和选项卡进行可靠地管理和迭代?的详细内容。更多信息请关注PHP中文网其他相关文章!