我有一个使用Selenium的TestMethod,代码如下:
[TestMethod]
public void ShouldSendPasswordReminder()
{
// go to loginregister url
_fireFoxWebDriver.Navigate().GoToUrl(UkPaBaseUrl + "loginregister.aspx");
Thread.Sleep(1000);
// click the forgotten password
_fireFoxWebDriver.FindElement(By.LinkText("Forgotten your password?")).Click();
Thread.Sleep(1000);
// enter your email address
_fireFoxWebDriver.FindElement(By.Id("PasswordResetRequest1_PasswordResetRequest_Username"))
.SendKeys("username.lastname@domain.com");
Thread.Sleep(1000);
// click submit
_fireFoxWebDriver.FindElement(By.Id("PasswordResetRequest1_PasswordResetRequest_PasswordResetRequestSubmit")).Click();
Thread.Sleep(5000);
// assert
Assert.IsTrue(_fireFoxWebDriver.Url.Contains("ThankYou"));
}
如你所见,我需要调用Thread.Sleep很多次(因为页面可能由于javascript等原因需要一些时间才能完成它的操作),而且几乎在每个操作之后都需要这样做,因为Selenium似乎无法像WatiN那样处理页面加载和延迟。
这使得代码变得相当丑陋,并且不太可靠。
有什么更好的方法来处理这种情况吗?你的测试中也会写频繁的Thread.Sleep调用吗?
谢谢。