Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在selenium中单击按钮后等待执行所有操作_C#_Selenium_Selenium Webdriver - Fatal编程技术网

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实际做了什么,以及它在哪一行失败