等待在selenium中单击按钮后执行的所有操作

时间:2014-12-21 12:10:24

标签: c# selenium selenium-webdriver

我很抱歉,如果之前已经回答,但我真的找不到解决问题的好方法

我有一个电子邮件输入字段,我想检查当您输入无效的电子邮件时会出现错误消息。 我的代码看起来像这样:

private void LoadElements()
{
     Email = driver.FindElement(By.Id("MainContent_Email"));
     SaveButton = driver.FindElement(By.Id("MainContent_SaveButton"));
     ErrorMessage = driver.FindElement(By.Id("MainContent_PersDetsError"));
}
public void test()
{
     //Email, SaveButton & Error are IWebElement
     LoadElements();
     Email.Clear();
     Email.SendKeys(emailString);
     SaveButton.Click();
     // Avoid stale element exception on refresh after a successful save:
     LoadElements();
     Assert.IsTrue(ErrorMessage.Displayed);
}

我的问题是,当我尝试故意测试失败(输入有效的电子邮件)时,有时候我仍然会遇到过时的元素异常。我认为这是因为LoadElements()过快地加载了Web元素。

我的问题是:有没有办法在执行任何表扬之前等待页面完全加载?

PS我尝试了以下代码,它对我不起作用

IWait<IWebDriver> wait = new OpenQA.Selenium.Support.UI.WebDriverWait(driver, TimeSpan.FromSeconds(30.00));

 wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));

0 个答案:

没有答案