C#Selenium在Chrome和Firefox中打开新选项卡时没有新窗口句柄

时间:2016-09-22 14:26:33

标签: c# google-chrome selenium firefox

用于Chrome和Firefox的Selenium,在C#中编码,不会处理切换到我的自动化测试期间打开的新选项卡。我不认为它专注于新的选项卡打开,因为当我完全运行我的程序时,我收到此错误:“超出范围”异常和“索引超出范围。必须是非负的且小于大小的集合。“

我尝试过使用:

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

driver.SwitchTo().Window(driver.WindowHandles[1]);
driver.SwitchTo().Window(driver.WindowHandles[0]).Close(); // close the first tab
System.Threading.Thread.Sleep(5000); //Wait 5 seconds just in case
driver.SwitchTo().Window(driver.WindowHandles[1]); //Makes sure I'm on the correct tab

但没有运气。如果我没有关闭第一个选项卡,我收到错误:“NoSuchElementException:无法找到element:{method ...}”,我认为这是正确的,因为焦点仍在第一个选项卡上。任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

关闭tab[0]后,旧tab[1]成为新的tab[0],因此您应该切换到tab[0]

Selenium在后台运行,因此窗口在运行时无需关注焦点。这也意味着Selenium永远不会将焦点更改回浏览器窗口。如果您在代码运行时正在观察窗口,则应该能够看到浏览器更改选项卡。