C# 在selenium中单击按钮后等待执行所有操作
如果以前有人回答过,我很抱歉,但我真的找不到解决问题的好办法 我有一个电子邮件输入字段,我想检查当你输入一封无效的电子邮件时是否会出现错误消息。 我的代码看起来像这样:C# 在selenium中单击按钮后等待执行所有操作,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,如果以前有人回答过,我很抱歉,但我真的找不到解决问题的好办法 我有一个电子邮件输入字段,我想检查当你输入一封无效的电子邮件时是否会出现错误消息。 我的代码看起来像这样: private void LoadElements() { Email = driver.FindElement(By.Id("MainContent_Email")); SaveButton = driver.FindElement(By.Id("MainContent_SaveButton"));
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"));
我们需要看看LoadElements实际做了什么,以及它在哪一行失败