我很抱歉,如果之前已经回答,但我真的找不到解决问题的好方法
我有一个电子邮件输入字段,我想检查当您输入无效的电子邮件时会出现错误消息。 我的代码看起来像这样:
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"));