#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)) — однако не используйте его для ожидания загрузки элемента.