如何让Selenium-WebDriver在sendkey之后等待几秒钟?

时间:2013-12-27 10:10:10

标签: c# selenium selenium-webdriver

我正在研究C#Selenium-WebDriver。发送密钥后,我想等几秒钟。我执行以下代码等待2秒钟。

public static void press(params string[] keys)
{
       foreach (string key in keys) 
       { 
          WebDriver.SwitchTo().ActiveElement().SendKeys(key);
          Thread.Sleep(TimeSpan.FromSeconds(2));
       }
}

我称之为:

press(Keys.Tab, Keys.Tab, Keys.Tab);

工作正常。哪一种更好?

3 个答案:

答案 0 :(得分:11)

我会不惜一切代价避免使用类似的东西,因为它会减慢测试速度,但我遇到了一个我没有其他选择的情况。

public void Wait(double delay, double interval)
{
    // Causes the WebDriver to wait for at least a fixed delay
    var now = DateTime.Now;
    var wait = new WebDriverWait(myWebDriver, TimeSpan.FromMilliseconds(delay));
    wait.PollingInterval = TimeSpan.FromMilliseconds(interval);
    wait.Until(wd=> (DateTime.Now - now) - TimeSpan.FromMilliseconds(delay) > TimeSpan.Zero);
}

以某种方式观察DOM总是更好,例如:

public void Wait(Func<IWebDriver, bool> condition, double delay)
{
    var ignoredExceptions = new List<Type>() { typeof(StaleElementReferenceException) };
    var wait = new WebDriverWait(myWebDriver, TimeSpan.FromMilliseconds(delay)));
    wait.IgnoreExceptionTypes(ignoredExceptions.ToArray());
    wait.Until(condition);
}

public void SelectionIsDoneDisplayingThings()
{
    Wait(driver => driver.FindElements(By.ClassName("selection")).All(x => x.Displayed), 250);
}

答案 1 :(得分:1)

您可以使用Thread.Sleep(miliseconds)函数。 这将停止你的C#线程和selenium继续

[TestMethod]
public void LoginTest()
{
    var loginForm = driver.FindElementByXPath("//form[@id='login-form']");

    if (loginForm.Enabled)
    {
        MainPageLogin(loginForm);
        CheckLoginForm();
    }
    else
    {
        CheckLoginForm();
    }

    **Thread.Sleep(5000);**
    Assert.AreEqual(driver.Url, "https://staging.mytigo.com/en/");
}

答案 2 :(得分:-1)

public static void press(params string[] keys)
{
       foreach (string key in keys) 
       { 
          WebDriver.SwitchTo().ActiveElement().SendKeys(key);
          Sleep(2000);
       }
}

提供相同的