如何替换Thread.Sleep()?虽然所有元素都已加载

时间:2018-03-15 17:22:52

标签: c# selenium selenium-webdriver

如何替换Thread.Sleep()?虽然所有元素都已加载

public void Test()
{
    home.OpenHomePage();
    users.Login(new Logins("test1", "test2"));
    Thread.Sleep(2000);
    BtnOk();
    Thread.Sleep(2000);
   ..................}

例如: BtnOk (); 在此之前,我等到元素加载: (driver.FindElement (By.XPath ("// button")). Click ()

2 个答案:

答案 0 :(得分:0)

停止使用Thread.sleep(),因为即使下一个元素加载也会延迟执行。切换到显式等待。 在您的情况下,可以使用以下等待:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.XPath ("// button")));

答案 1 :(得分:0)

根据您的问题/代码块,在函数BtnOk()之前检查 WebElement 是否可点击并在其上调用Click()您必须使WebDriverWait ExpectedConditions ElementToBeClickable作为{{3}},如下所示:

wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
element = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("// button")));
element.Click();