selenium - Selenium - 如何验证页面刷新时出现的加载器
问题描述
我有这个测试用例:
- 刷新页面
加载器出现一小会儿。这实际上只是一个 DIV
aria-label = '加载中'
验证页面刷新时加载器元素在页面上是否可见
- 验证页面加载完成时加载器元素在页面上不可见。
这是我写的代码:
_driver.Navigate().Refresh();
IList<IWebElement> loaders = _driver.FindElements(By.XPath("//*[@aria-label='Loading']"));
loaders.Count.Should().Be(1);
我的问题是,当 Refresh() 执行时,页面刷新得如此之快,以至于后续行永远找不到该元素。我正在考虑编写一些冗长的循环,在后台线程中不断刷新页面,而前台线程检查加载程序的存在。一旦找到加载器,它将停止后台线程。
这是一个好方法吗?有哪些选择?或者,这个测试用例不适合自动化。
非常感谢
解决方案
这是一个想法。我自己没有测试过,但试着根据你的情况调整它,看看它是否有效。
如果您尝试单击 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
}
推荐阅读
- c++ - 在一个变量中保存两种不同的返回类型
- jenkins-pipeline - 如何将工件从一个仓库复制到另一个仓库
- java - 如何使用 SSHJ 实现 SSH 用户/密码认证
- tensorflow - convert tensorflow model to pb tensorflow
- android - ViewModel 中的 Kotliin Dagger 字段注入引发 Dagger/Binding 异常
- android - 如何删除片段的默认按钮?
- android - React Native 应用程序无法在 android 上编译,可能与 AndroidX 有关
- c# - .Net Standard 2.0 库中的 Aspose.Cell 错误
- protractor - 在量角器中禁用浏览器启动以测试 REST 服务
- python-3.x - 命令在子进程或 os.popen 中不起作用,但在终端中起作用