【问题标题】:Visibility of spinner is getting status true but after spinner dismiss invisibility of spinner is not working as expected微调器的可见性正在获取状态,但在微调器关闭后微调器的不可见性未按预期工作
【发布时间】:2020-09-12 06:13:23
【问题描述】:

我正在使用 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;
            }
        }
}

那么我怎样才能避免这么长的等待时间,并在微调器从页面中关闭后立即执行脚本。

脚本中的一些观察:

  1. 当我检查 html 时,当元素可见时,我可以看到显示属性的样式是“块”。但是从 UI 中关闭微调器后,我可以看到,xpath 在搜索区域://iframe/parent::body//div[text()='Loading..']

  2. 出于调试目的,我设置了在微调器从页面中关闭后等待元素可见。然后我可以看到超时异常和 NoSuchElement 异常被触发。

【问题讨论】:

  • 在加载时和加载完成后使用 spinner/loader 元素的基于文本的 html 更新问题。

标签: c# selenium selenium-webdriver webdriverwait expected-condition


【解决方案1】:

你需要考虑一些事情:

  • 尚不清楚您是否有单独的测试来验证 微调器的可见性,但 微调器的不可见性 是一个有效的用例。所以只有InvisibilityOfElementLocated() 可以解决你的目的。
  • Spinner_Check 方法看起来完全是开销,您只需一行代码即可替换它。

解决方案

验证InvisibilityOfElementLocated 例如spinner 你可以使用以下解决方案:

new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.InvisibilityOfElementLocated(LocatorSelect(locator, locatorvalue)));

参考

您可以在以下位置找到一些相关的讨论:

【讨论】:

  • 还在等待10多秒。
  • @BABURAJVD 您能否检查locatorvalue 并确保它在微调器处于活动状态且可见时唯一标识微调器?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多