2016-09-22 11 views
1

用于Chrome和Firefox的Selenium在C#中编码时不会处理切换到在自动化测试期间打开的新选项卡。我不认为它着重于打开新标签,因为当我完全运行我的程序时,我收到此错误:“超出范围”异常和“索引超出范围。必须是非负数,小于收藏品“。C#Selenium在Chrome和Firefox中打开新选项卡时没有新窗口句柄

我已经尝试使用:

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:无法找到元素:{method ...}”,我认为这是正确的,因为焦点仍在第一个选项卡上。任何帮助将不胜感激。谢谢。

+0

一旦你关闭了'tab [0]',旧的'tab [1]'不会成为新的'tab [0]'? – sokkyoku

+0

是的,我没注意到。谢谢。但现在我唯一的问题是,我作为输入的xpath无法在新选项卡上找到。这是我会发现的另一个问题。再次感谢 – CRich

+0

如果这解决了问题,您的问题提到我可以将它作为您接受的答案发布。 – sokkyoku

回答

0

一旦您关闭了tab[0],旧的tab[1]将变为新的tab[0],因此您应该切换为tab[0]

Selenium在后台运行,因此窗口在运行时无需处于焦点状态。这也意味着Selenium永远不会将焦点改回浏览器窗口。如果您在代码运行时观看窗口,则应该可以看到浏览器更改标签。

+0

对不起,我应该更好地回答我的问题。我想问的是,当驱动程序使用上面的driver.switchTo函数切换到新选项卡/窗口时,新选项卡/窗口是否会从旧选项卡/窗口更改焦点? – CRich

+0

是的,它的功能就是这样;) – sokkyoku

+0

好的,谢谢。我认为我的XPath不正确。非常感谢您的时间帮助我并回答:) – CRich

相关问题