【问题标题】:C# IE11 selenium webdriver, No new window handles with new tabC# IE11 selenium webdriver,没有带有新标签的新窗口句柄
【发布时间】:2016-02-02 05:42:18
【问题描述】:

当我的应用打开新选项卡时,用于 Internet Explorer 11 的 Selenium Webdriver 不会创建新窗口句柄。

问题类似于 this ,这是窗口句柄在几分之一秒内消失的问题,但在我的情况下,甚至一开始都没有创建新的窗口句柄。

我使用该链接中的测试代码来检查消失的窗口句柄,但它从未在打开新选项卡时创建另一个窗口句柄,因此测试只显示第一个控制台输出,而不显示第二部分。

我尝试使用:

driver.SwitchTo().Window(driver.WindowHandles.Last());

但 Selenium Webdriver 的焦点停留在第一个选项卡上,因为我相信它不会为新选项卡创建新句柄。

另外,试过这个:

driver.SwitchTo().Window(driver.WindowHandles[1]);

这会导致“超出范围”异常和“索引超出范围。必须为非负数且小于集合的大小。”

如果我将 [1] 更改为 [0],那么显然我不会得到异常,因为焦点只是设置在第一个选项卡上。

根据我对我提供的链接中的测试代码的测试以及我自己的尝试,我认为没有创建新的窗口句柄。

我尝试重置 IE11,然后只更改 Selenium 网站上描述的设置,包括添加注册表项,我使用 Helium 的解决方案来找到 here

另外,我阅读了一些建议,将我正在打开的网站添加到 IE 中的受信任网站列表中,但仍然没有成功。

感谢任何帮助。谢谢。

【问题讨论】:

  • 一年后遇到同样的问题。无论您打开了多少选项卡,WindowHandles 都只包含 1 个值。但如果您打开新窗口,它将包含更多值。

标签: c# internet-explorer selenium tabs


【解决方案1】:

希望这将有助于某人继续前进......

在遇到同样的问题后,我一直在研究这个问题,但无论我尝试什么都没有解决它! 在 regedit 中,我添加了 'BF_Cache' -> 'iexplorer.exe',在区域 0、2、3、4 中添加了设置为 '3' 的 '2500'(已经存在于区域 1 ) & 将“保护模式”设置为启用,但没有运气...我的新窗口将通过 Selenium 正确打开,但在调试时我确认只有一个句柄可用!

但是...在我几乎放弃之后 - 我决定将视觉工作室作为一个 管理员。好像通过 Magic Selenium 发现还有更多 不止一个窗把手!

【讨论】:

    【解决方案2】:

    这是我设法使用的一种解决方法。

    您可以使用 javascript 打开一个新窗口。它会给你处理。

    string javaScript = "window.open('" + url + "','_blank', 'resizable=yes, scrollbars=yes, titlebar=yes, width=1280, height=680, top=10, left=10');";
    
    jsExecutor = (IJavaScriptExecutor)ieDriver;
    jsExecutor.ExecuteScript(javaScript);
    

    【讨论】:

      最近更新 更多