我正在使用 selenium c# 自动化 Web 应用程序。
登录后,我必须处理出现在主页中的微调器。
我已经明确等待
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(LocatorSelect(locator, locatorvalue)));
结果正在通过,脚本等待元素可见。
但是在验证微调器可见性之后,我正在验证同一元素的不可见性。
但是即使我给了 10 秒,该元素仍然等待超过 30-40 秒。然后大约 40 秒后它没有抛出任何错误并继续执行脚本而没有任何异常
public void Spinner_Check(string locator, string locatorvalue)
{
int count = 1;
WebDriverWait waits = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
waits.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(LocatorSelect(locator, locatorvalue)));
while (count > 0)
{
waits.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.InvisibilityOfElementLocated(By.XPath(locatorvalue)));
IList<IWebElement> spinner_element = driver.FindElements(By.XPath(locatorvalue));
int size = spinner_element.Count;
if (size != 1)
{
count = 0;
WriteLine("pass", "Spinner is dismissed for the page");
break;
}
}
}
那么我怎样才能避免那么多等待时间并在微调器从页面中关闭后立即执行脚本。
脚本中的一些观察:
当我检查 html 时,当元素可见时,我可以看到显示属性的样式是“块”。但是从 UI 中关闭微调器后,我可以看到,xpath 在搜索区域中没有显示任何元素://iframe /parent::body//div[text()='正在加载..']
出于调试目的,我设置了等待从页面中关闭微调器后可见的元素。然后我可以看到超时异常和 NoSuchElement 异常被触发。