2016-04-01 7 views
0

В моем сценарии я проверяю, переместится ли ссылка на ссылку на другую страницу (проверка названия страницы). IE, FF и хром возвращение 2, как ожидается, но Opera возвращается 4. У меня не было никаких других экземпляров Opera открыт во время ходовых испытаний. Он нажимает на ссылку и открывается нужная страница, но WindowHandles возвращает 4.Opera - driver.WindowHandles возвращает неверный счет

Код:

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); 

Может кто-то предложить, почему Opera возвращает 4 вместо 2.

Спасибо.

ответ

1

Драйвер Opera не возвращает правильное количество ручек. Этот вопрос уже сообщалось в проекте, но это не кажется, что проект больше не поддерживается:

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

+0

Спасибо за ответ. Есть ли способ обхода решения? Спасибо – Sudeepthi

+0

Хром сам делает большой обходной путь. –

+0

Я мог успешно работать в Chrome FF и IE. Тестовый пример завершается неудачно только в Opera. Есть ли какая-нибудь работа, чтобы управлять тестовым случаем и в Opera. Не могли бы вы рассказать о том, что вы подразумеваете под словом «Chrome сам по себе является отличным решением». @Florent B. – Sudeepthi

0

я встретил то же самое, как вы с водителем Opera, а также (если я помню правильно), то CurrentWindowHandle свойство также не работает.

Обход:

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

Спасибо @ Kim Homann – Sudeepthi

Смежные вопросы