selenium - 无法访问 NightwatchJS 中页面的 url
问题描述
在测试运行期间,我间歇性地无法获取 url。让我给您介绍一下背景:单击页面上的按钮时,它会导航到下一页。在导航第一件事时,我想在测试期间验证 url。下面是我用来从当前页面获取 url 的代码片段。
1. url 断言的 nightwatch 原生实现
assertUrlContains(text) {
this.assert.urlContains(text);
return this;
}
2. 另外,尝试使用带有承诺模式的 api.url 获取 url。
getCurrentUrl() {
return new Promise((resolve) => {
this.api.url((result) => {
resolve(result.value);
});
});
}
两种方法都有相同的问题,下面是错误的堆栈跟踪:
SEARCH RESULTS URL: null
(node:12375) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'indexOf' of null
(node:12375) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
✖ TypeError: Cannot read property 'indexOf' of null
奇怪的是,我注意到浏览器导航到目标页面,但即使页面加载事件完成,夜班也无法获取 url。
解决方案
您可以在单击按钮后添加显式等待条件,以确保所需页面已成功加载。然后,您可以使用以下方法之一来验证 URL:
使用
urlEquals
此处记录的守夜 API:http: //nightwatchjs.org/api#assert-urlEquals您可以通过测试脚本执行 javascript 命令:
window.location.href
检索窗口的 url 并将其保存为字符串。然后你可以在这个字符串上执行断言
推荐阅读
- c# - 远程服务器返回错误:(401) Unauthorized c#
- python - 对与另一列中最常见的项目相关联的列中最常见的项目进行分组
- java - 在 getSingleResult 聚合中处理 null 的正确方法
- c# - 功能测试跳过授权 WebApplicationFactory OIDC
- python - 如何使递归函数在这个特定的 Python 脚本中工作?
- encryption - Drupal9:安装问题 PHP-加密库
- javascript - 如何在点击时翻转 DIV,并在彼此之间进行交互(一个翻转打开,另一个关闭)?
- mysql - Rails Migrations MySQL 算法::并发替代
- python - Python 3.8 中的熊猫;使用多字符分隔符保存数据框
- python - Python字典合并删除空列表?