Селен RC + C #, как справиться с проблемой тайм-аут после запуска нового обзора? - PullRequest
1 голос
/ 29 декабря 2010

все Когда я узнал, что selenium rc использует selenium.click для открытия нового обзора, я столкнулся с проблемой.Новый обзор можно открыть правильно, но инструмент тестирования NUint показал проблему «тайм-аут», независимо от того, что я добавил время, у него всегда есть проблема тайм-аута. Все коды следующие:

[Test]
    public void SelectTest()
    {
        //selenium = new DefaultSelenium("localhost", 4444, "*chrome","http://www.webkey.cn/demo/docs/index2.asp?url=/demo/docs/menuselect/");
       // selenium.Start();
        selenium.Open("http://www.webkey.cn/demo/docs/index2.asp?url=/demo/docs/menuselect/");
        selenium.WaitForPageToLoad("8000");
        selenium.SelectWindow("name=main");
        selenium.Select("city","label=上海市");
        Assert.AreEqual("上海市",selenium.GetSelectedLabel("city"));

        selenium.Select("country","index=1");
        Assert.AreEqual("徐汇区",selenium.GetSelectedLabel("country"));
        selenium.SelectFrame("relative=up");
        selenium.SelectFrame("Header1");
        selenium.Click("link=首页");
        selenium.WaitForPageToLoad("10000");// This code has timed out problem.
}

Ответы [ 2 ]

0 голосов
/ 30 декабря 2010

Попробуйте

selenium.clickAndWait("link=首页");<br>
selenium.WaitForPageToLoad("60000");
0 голосов
/ 29 декабря 2010

Первое увеличение времени ожидания селена по умолчанию (как я помню по умолчанию defaulttimeout = 30000):

selenium.SetTimeout("90000"); // 1.5 minute

И второе увеличение времени ожидания загрузки страницы:

 selenium.WaitForPageToLoad("10000"); // it's only 10 seconds, 
 //increase to 60000 - one minute

РЕДАКТИРОВАТЬ:

При этом я проверил все клики, сделанные ajax, и я использую следующий методiod для ожидания какого-либо элемента на странице после перенаправления, поэтому попробуйте использовать это для ожидания перенаправления:

 public static bool WaitForElement(String waitingElement, DefaultSelenium selenium)
        {
            var isElementExists = selenium.IsElementPresent(waitingElement);
            if (!isElementExists)
            {
                Thread.Sleep(50);
                return WaitForElement(waitingElement, selenium);
            }
            else
            {
                return isElementExists;
            }
        }

Пример:

 selenium.Open("/sign-up");
 WaitForElement("//input[@name='Invite']", selenium);//Wait...
...