为什么Driver.SwitchTto并不总是在硒中起作用?

时间:2016-03-06 08:15:26

标签: c# selenium selenium-webdriver

我使用代码

windowHandles = SeleniumHelper.WindowHandles(); 

// click...

if (SeleniumHelper.WindowHandles().Count > windowHandles.Count)
{
    windowHandles = SeleniumHelper.WindowHandles();    
    while (pageTitle == SeleniumHelper.Driver.Title)
    {   
       SeleniumHelper.Driver.SwitchTo().Window(windowHandles[windowHandles.Count - 1]);
       Thread.Sleep(2000);                                                                         
    } 

    // do something...  

    SeleniumHelper.Driver.Close();
    SeleniumHelper.BackToMainWindow();
}

问题是驱动程序找到了窗口,但没有切换到它。 也许有一种不同的方式可以切换到另一个窗口,比如通过javascript切换?

1 个答案:

答案 0 :(得分:1)

问题在于

SeleniumHelper.Driver.SwitchTo().Window(windowHandles[windowHandles.Count - 1]);

无论while循环条件如何,您始终切换到最后一个窗口。试试这个

string currentWindoe = SeleniumHelper.Driver.CurrentWindowHandle();
while (pageTitle != SeleniumHelper.Driver.Title)
{   
    SeleniumHelper.Driver.SwitchTo().Window(SeleniumHelper.Driver.CurrentWindowHandle());
    Thread.Sleep(2000);                                                                         
}

或者

string currentWindow = SeleniumHelper.Driver.CurrentWindowHandle();
foreach (string window in SeleniumHelper.Driver.WindowHandles())
{
    if (!window.equals(currentWindow))
    {
        SeleniumHelper.Driver.SwitchTo().Window(window));
    }
}