Selenium WebDriver超时异常

时间:2014-04-11 08:41:42

标签: c# selenium-webdriver

我添加了一些断点我的测试在调试模式下工作。但删除断点后,我得到Timeout异常。我使用了Thread.Sleep并且它有用,而不是使用thread.sleep

        [Test]
        public void OpenStockControl()
        {
            driver.Navigate().GoToUrl("http://testdeneme.com");
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(1));
            IWebElement userName = driver.FindElement(By.Id("LoginNew1_tU"));
            userName.SendKeys("TEST3");
            IWebElement userPassword = driver.FindElement(By.Id("LoginNew1_tP"));
            userPassword.SendKeys("A7535");
            IWebElement buttonSubmit = driver.FindElement(By.Id("LoginNew1_bGo"));
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
            buttonSubmit.Click();

            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(20));
            SwitchWindow("ABC MA", driver);
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(20));

            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            IWebElement element = wait.Until(ExpectedConditions.ElementExists(By.Id("ext-gen54")));
            element.Click();

            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
            IWebElement element2 = wait.Until(ExpectedConditions.ElementExists(By.Id("ext-gen207")));
            element2.Click();

            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
            IWebElement element3 = wait.Until(ExpectedConditions.ElementExists(By.Id("ext-gen260")));
            element3.Click();
        }

2 个答案:

答案 0 :(得分:1)

您的等待(WebDriverWait)等待10秒钟才能显示元素。不符合ExpectedCondition,因此抛出异常。您可以增加调用WebDriverWait构造函数的时间量。

答案 1 :(得分:0)

你看过http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp了吗?我发现添加我自己的方法,如bool WaitForPage([WebDriver],[Page],[time])及其推论WaitForNotPage(...)解决了许多超时问题。显式等待和隐式等待确实解决了很多问题,但你仍会偶尔发现自己使用Thread.Sleep()。