2009-11-26 4 views
4

Привет я использую WatiN (версия 2.0.10.928) с NUnit (2.5.2.9222) , если у меня есть что-то вроде WatiN модульные тесты с NUnit газораспределительного проблемы

 
    [Test] 
     public void WebPageTest() 
     { 
      string url = "www.google.com"; 
      IE ie = new IE(url);
ie.TextField(Find.ByTitle("Google Search")).TypeText("Watin"); ie.Button(Find.ByName("btnG")).Click();
ie.Element(Find.ByText("WatiN")).Click();

 // ie.WaitForComplete(); 
     Assert.IsTrue(ie.Text.Contains("Welcome at the WatiN")); 
     ie.Close(); 
    } 

Затем, как правило, это будет работать, и тест будет проходить, но иногда когда я ударил утверждение, кажется, что Ватин не закончил загрузку страницы и все еще находится на предыдущей странице. У меня есть эта проблема с использованием свойств IE.Text или IE.Url. Я попытался использовать WaitForComplete() (хотя это не обязательно), но по-прежнему имеет ту же проблему.
У кого-нибудь была эта проблема с WatiN раньше? Неужели кому-нибудь удалось использовать WatiN вместе с NUnit? Или, может быть, он будет работать лучше с другой модульной системой тестирования, такой как MBUnit? Кому-нибудь повезло с MBunit?

ответ

1

Тестирование, которое вы используете, не имеет значения, я боюсь - это одна из «ошибок» любого скрининга экрана, и WaTin ничем не отличается.

Необходимо, конечно, позвонить WaitForComplete(), я боюсь.

Некоторые из моих коллег сообщили, что версия IE может изменить ситуацию; В IE6, в частности, есть некоторые внутренние проблемы времени, которые могут вызвать проблемы. IE8 выглядит немного лучше.

0

попробуйте использовать

[Test] 
    public void WebPageTest() 
    { 
     string url = "www.google.com"; 
     IE ie = new IE(url); 
     ie.TextField(Find.ByTitle("Google Search")).TypeText("Watin"); 
     var btnG = ie.Button(Find.ByName("btnG")); 
     btnG.ClickNoWait(); 
     ie.WaitForComplete(400); 
     var elementWatin = ie.Element(Find.ByText("WatiN")); 
     elementWatin.ClickNoWait(); 
     ie.WaitForComplete(400); 
     Assert.IsTrue(ie.Text.Contains("Welcome at the WatiN")); 
     ie.Close(); 
    } 

Благодаря Ганди Rajan

1

У меня была такая же проблема с моим тестам; к сожалению, похоже, что вы можете предположить, что WaitForComplete(), который должен быть присущ методу Click(), будет функционировать правильно. Даже явным образом вызов WaitForComplete() после этого не всегда срабатывал.

В качестве последнего средства мы использовали System.Threading.Thread.Sleep(int timeout_in_milliseconds), чтобы заставить браузер предоставить время загрузки страницы. Это не вполне пуленепробиваемый способ сделать это, но он устранил около 90% таких ошибок. Для тайм-аута мы использовали что-либо от 500 до 2000 миллисекунд, в зависимости от того, сколько времени потребуется для загрузки и как быстро мы хотим, чтобы тест запускался.

-1

Я использовал ie.WaitForComplete(), но она по-прежнему делает исполнение ожидания, и иногда это раз, так что я использую

Settings.AttachToBrowserTimeOut = 200; 
    Settings.WaitForCompleteTimeOut = 200; 

Это работало для меня.

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