用于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 ...}”,我认为这是正确的,因为焦点仍在第一个选项卡上。任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
关闭tab[0]
后,旧tab[1]
成为新的tab[0]
,因此您应该切换到tab[0]
。
Selenium在后台运行,因此窗口在运行时无需关注焦点。这也意味着Selenium永远不会将焦点更改回浏览器窗口。如果您在代码运行时正在观察窗口,则应该能够看到浏览器更改选项卡。