2016-04-01 36 views
0

Benim senaryoda, bir bağlantıyı tıklatmanın başka bir sayfaya gidip gitmeyeceğini doğrularım (sayfa başlığı için doğrulama). IE, FF Başka Opera örneklerini yoktu beklendiği gibi dönüş 2 ama Opera döner 4. çalıştıran testlerin anda açıldı ve krom. Bu linke tıkladığında ve gerekli sayfa açılacağını ancak WindowHandles 4.Opera - driver.WindowHandles yanlış bir sayı döndürüyor

Kodu döndürür: Opera 4 yerine

2. Teşekkür döndürür neden

string BaseWindow = Drivers._driverInstance.CurrentWindowHandle; 
Drivers._driverInstance.SwitchTo().Frame(Drivers._driverInstance.FindElement(By.ClassName("iframe-fix"))); 
if (Drivers._driverInstance.GetType().Name.ToString() == "InternetExplorerDriver") 
{ 
    IJavaScriptExecutor js = (IJavaScriptExecutor)Drivers._driverInstance; 
    js.ExecuteScript("arguments[0].click();", Drivers._driverInstance.FindElement(By.LinkText("Professional Services."))); 
} 
else 
{ 
    Drivers._driverInstance.FindElement(By.LinkText("Professional Services.")).Click(); 
} 
    System.Collections.ObjectModel.ReadOnlyCollection<string> handles = Drivers._driverInstance.WindowHandles; 
    if (handles.Count == 2) 
    { 
     foreach (string handle in handles) 
     { 
     if (handle != BaseWindow) 
     { 
      string title = Drivers._driverInstance.SwitchTo().Window(handle).Title; 
      Assert.AreEqual("title of the page", Drivers._driverInstance.Title); 
      } 
     } 
    } 
    else 
    { 
     Assert.Fail("WindowHandles returns " + handles.Count + " instead of 2"); 
    } 
Drivers._driverInstance.SwitchTo().Window(BaseWindow); 

birisi önerebilir.

cevap

1

Opera sürücüsü, doğru sayıda tanıtıcı döndürmez. Bu sorun zaten projeye bildirilen ancak proje artık korunur gibi görünüyor edilmiştir: (ı doğru hatırlıyorsam),

https://github.com/operasoftware/operachromiumdriver/issues/15

+0

yanıt için teşekkür ederiz. Bunu çözmek için bir çözüm var mı? Teşekkürler – Sudeepthi

+0

Chrome'un kendisi de harika bir çözüm. –

+0

Chrome FF ve IE'de başarılı bir şekilde çalışabilirim. Test durumu sadece Opera’da başarısız oluyor. Test vakasının Opera'da da geçmesi için bir iş var mı? Lütfen "Chrome'un kendisi harika bir çözüm buluyor" ile neyi kastediyorsunuz? @Florent B. – Sudeepthi

0

Opera sürücüsü ile sizinle aynı şeyi karşılaştı artı CurrentWindowHandle özelliği de çalışmıyor.

Çözüm:

public static void SwitchToPopup(TestTarget target, bool toPopup) 
{ 
    if (target.IsOpera) 
    { 
     if (toPopup) 
     { 
      _windowIndex += 3; 
      new WebDriverWait(target.Driver, TimeSpan.FromSeconds(DefaultTimeoutInSeconds)).Until(d => d.WindowHandles.Count > _windowIndex); 
     } 
     else 
     { 
      _windowIndex -= 3; 
     } 
     target.Driver.SwitchTo().Window(target.Driver.WindowHandles[_windowIndex]); 
    } 
    else 
    { 
     IEnumerable<string> windowHandles = toPopup ? target.Driver.WindowHandles : target.Driver.WindowHandles.Reverse(); 

     bool bFound = false; 
     foreach (string windowHandle in windowHandles) 
     { 
      if (bFound) 
      { 
       target.Driver.SwitchTo().Window(windowHandle); 
       break; 
      } 
      bFound = windowHandle == target.Driver.CurrentWindowHandle; 
     } 
    } 
} 
+0

Teşekkür ederim @Kim Homann – Sudeepthi