Явное ожидание не приостанавливает поток

#c# #selenium #unit-testing #selenium-webdriver

#c# #селен #модульное тестирование #selenium-webdriver

Вопрос:

Я новичок в тестировании и изучал курс Udemy. Я попытался использовать явное ожидание в тесте, где я открываю два разных URL-адреса. прежде чем нажать на второй URL-адрес, я хочу подождать 30 секунд, но мой тест завершается всего за 10-13 секунд.

  [TestMethod]
        public void InterrogatingIWEBElements()
        {
            var driver = getChromeDriver();
            driver.Navigate().GoToUrl("http://www.ultimateqa.com/automation/");
            var myelement = driver.FindElement(By.XPath("//*[@href='http://courses.ultimateqa.com/users/sign_in']"));
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
            IWebElement element = wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//*[@href='http://courses.ultimateqa.com/users/sign_in']")));
            myelement.Click();
        }
 

Метод WebDriver

 
        private IWebDriver getChromeDriver()
        {
            var outputDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            return new ChromeDriver(outputDirectory);
        }
 

Комментарии:

1. 30 секунд в WebDriverWait — это тайм- аут — максимальное время ожидания Селеном ExpectedCondition для возврата True. Если вы хотите приостановить — используйте Thread.Sleep(3000)

Ответ №1:

Явное ожидание здесь указывает драйверу попытаться найти элемент в течение 30 секунд. Если он находит элемент, он завершает ожидание и продолжает выполнение. Явное ожидание здесь означает, что вы хотите подождать этот конкретный элемент в течение некоторого времени, в то время как, с другой стороны, неявное ожидание будет происходить всякий раз, когда вы пытаетесь получить элемент.

Если по какой-то причине вам нужно подождать 30 секунд, вы можете использовать поток.Метод Sleep(TimeSpan.FromSeconds(30)) — однако не используйте его для ожидания загрузки элемента.