2011-10-03 23 views
2

我在#IE9中使用webDriver並發現一個問題。如果我以運行模式開始測試,那麼所有測試都會失敗,因爲webDriver不存在(兩個窗口即ie),但如果我在測試中放置斷點並開始測試調試模式我已通過所有測試。請告訴我,做什麼,因爲我不知道。 這是我的代碼:C#中的WebDriver(使用Windows和同步)

private void MyMethods(IWebdriver driver) 
{ 

    foreach (var item in driver.WindowHandles) // if I put breakpoint, I see 2 count Window Handles else this methods don't work. 
    { 
     if (driver.SwitchTo().Window(item).Title == "PortalSubMenuPopupForm") 
     { 
      driver.SwitchTo().Window(item); 
      break; 
     } 
    } 
} 
+0

在發佈代碼,需要一個以上的線,你需要前綴每一行4個空格。 backtick無法正常工作。 – Amy

回答

0

硒有一個「問題」與IE瀏覽器,其中新窗口可能不是WindowHandles名單上出現的時候了。

的溶液或者是

  • 等待時間固定量主叫d river.WindowHandles

  • 使用的WebDriverWait類等待號碼前的元素在WindowHandles之下改變

我認爲第二個更強大。這裏是一個快速的實現:

public void LaunchNewWindow(IWebElement element) 
{ 
    int windowsBefore = driver.WindowHandles.Count; 
    element.Click(); 

    TimeSpan timeout = new TimeSpan(0, 0, 10); 
    WebDriverWait wait = new WebDriverWait(driver, timeout); 

    wait.Until((_driver) => 
    { 
     return _driver.WindowHandles.Count != windowsBefore; 
     //optionally use _driver.WindowHandles.Count > windowsBefore 
    }); 
} 

現在你可以使用的功能,像這樣:

IWebElement clickMe = //some element that launches a new window 

LaunchNewWindow(clickMe); 
foreach (var item in driver.WindowHandles) 
{ 
    //etc. 
}