[英]Selenium - How to verify loader that appears on a page refresh
我有这个测试用例:
加载程序出现一会儿。 这实际上只是一个DIV
aria-label ='正在加载'
验证刷新页面时在页面上是否可见加载程序元素
这是我写的代码:
_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.