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

我正在研究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); 

它工作正常。 哪一个更好?

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

 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 condition, double delay) { var ignoredExceptions = new List() { 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); } 

您可以使用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/"); } 
 public static void press(params string[] keys) { foreach (string key in keys) { WebDriver.SwitchTo().ActiveElement().SendKeys(key); Sleep(2000); } } 

服务相同