首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >getWindowHandles方法使用MS EDGE IE11和Selenium版本4.1.2返回不正确的窗口句柄数

getWindowHandles方法使用MS EDGE IE11和Selenium版本4.1.2返回不正确的窗口句柄数
EN

Stack Overflow用户
提问于 2022-04-07 05:29:55
回答 3查看 236关注 0票数 0

最近,我将Selenium版本从2.53升级到4.1.2,以便能够在MS IE11上测试我们的应用程序。但是,在使用selenium-4.1.2检索MS IE11中打开的窗口数时,我们间歇性地面临问题。

是否还有其他人面临类似的硒问题-4.1.2?

下面是我在MS IE11上尝试过的代码。有时我们可以看到它返回正确的否。窗户,但有时不是。我们还使用了足够的等待时间才能检索到窗口的数量。

注:这在Selenium-4.1.2的IE11浏览器上运行得非常好

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int noOfWindowsOpen = driver.getWindowHandles().size();

期望值:它应该始终返回正确的no值。窗户开着。

EN

回答 3

Stack Overflow用户

发布于 2022-04-07 14:55:16

打开新选项卡/窗口后,在计算WindowHandles的数量之前,需要为https://stackoverflow.com/a/46346324/7429447导出https://stackoverflow.com/a/48990165/7429447,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driver.get("http://www.google.com");
((JavascriptExecutor) driver).executeScript("window.open('http://facebook.com/');");
new WebDriverWait(driver, 10).until(ExpectedConditions.numberOfWindowsToBe(2));
int noOfWindowsOpen = driver.getWindowHandles().size();
票数 0
EN

Stack Overflow用户

发布于 2022-04-08 00:08:54

它似乎是一个自动边缘IE模式的已知限制。上面写着:

要确保新窗口已经成功创建,并且IEDriver已经检测到它,您必须不断检查获取窗口句柄命令的结果,直到它包含新窗口的句柄为止。

您可以尝试其中的示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int initialHandleCount = driver.getWindowHandles().size();
driver.findElement(By.id("<Id of the button that will open a new window>")).click();        
Set<string> newHandles = driver.getWindowHandles();
while (newHandles.size() == initialHandleCount) {
    newHandles = driver.getWindowHandles();
}
票数 0
EN

Stack Overflow用户

发布于 2022-04-11 01:01:08

我找到了解决上述问题的办法.

执行前,请确保关闭了ME Edge、IE和IE驱动程序的所有实例。如果没有,则从任务管理器中强制杀死它们,然后重新运行测试脚本。脚本将正确标识新窗口。

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71783086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文