繁体   English   中英

Selenium-如何验证页面刷新中出现的加载器

[英]Selenium - How to verify loader that appears on a page refresh

我有这个测试用例:

  1. 刷新页面
  2. 加载程序出现一会儿。 这实际上只是一个DIV

    aria-label ='正在加载'

  3. 验证刷新页面时在页面上是否可见加载程序元素

  4. 验证页面完成加载后,加载器元素在页面上是否不可见。

这是我写的代码:

   _driver.Navigate().Refresh();
    IList<IWebElement> loaders = _driver.FindElements(By.XPath("//*[@aria-label='Loading']"));
    loaders.Count.Should().Be(1);

我的问题是,当执行Refresh()时,页面刷新得如此之快,以至于后续的行都找不到该元素。 我正在考虑编写一些冗长的循环,以不断刷新后台线程中的页面,而前台线程检查加载程序的存在。 并且一旦找到装载程序,它将停止后台线程。

这是一个好方法吗? 有哪些选择? 或者,此测试用例不适用于自动化。

非常感谢

因此,您可以在.Refresh()之后添加2或3秒钟的等待时间,然后再继续操作。 因此,您已经创建了循环,并且循环将迭代直到它到达元素为止,因此这就是循环如此快结束的原因,您可以创建循环一段时间,例如在i=0时启动循环,然后迭代直到i到达您可以在100之间找到元素或检查元素的可用性。 我还与您共享了使用各种类型的WebDriver命令检查Web元素可见性的链接。

很高兴帮助我们告诉您是否可行

https://www.softwaretestinghelp.com/webdriver-commands-selenium-tutorial-14/

这是个主意。 我没有亲自测试过,但尝试根据您的情况进行调整,看看是否可行。

如果尝试单击DOM中不再存在的元素,则可能会收到Stale Element Reference Exception

因此,您可以使用try-catch块来捕获该异常:

try {
    _driver.Navigate().Refresh();
    IList<IWebElement> loaders = _driver.FindElements(By.XPath("//*[@aria-label='Loading']"));
    loaders.Count.Should().Be(1);
} catch (StaleElementReferenceException) {
    //do something with this
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM