node.js - 如何使用量角器验证 HTML 属性是否包含绝对 URL 或相对 URL?
问题描述
我正在使用 Protractor 测试 Web 应用程序,我注意到每当我尝试读取href
属性时,Protractor 都会将该值视为绝对 URL。这使我无法验证我的应用程序呈现的 URL 确实是绝对的。
假设我想要一个绝对 URL,包括我的元标记中的域:
<link rel="next" href="https://www.example.com/path-to-page">
事实证明,当我在 Protractor 中读取这个元素时,无论实际值是多少,我仍然得到一个绝对 URL。
假设后端 ( https://www.example.com ) 实际上呈现以下标签:
<link rel="next" href="/path-to-page">
使用量角器访问它
element(by.css('link[rel="next"]')).getAttribute('href')
yieldhttps://www.example.com/path-to-page
而不是/path-to-page
,这是我使用浏览器查看页面源时的实际值,或者curl
.
我觉得这种方法过于热心了。它可以隐藏实际的错误。这是错误还是功能?获取属性中实际路径的最佳方法是什么?
我在 Github 上发现了这个问题,但它以一条评论结束,暗示记者在 Stack Overflow 上寻求帮助。
请记住,我不只是想检查 URL 的路径部分。我想确认该属性确实包含所有内容。协议、域、路径。如果我的后端以不同的方式呈现它,Protractor 仍然会假装它是正确的,因为它会根据页面的上下文来计算域。
解决方案
与 Javascript 一起使用browser.executeScript();
将为您提供实际的 href,而不是 Protractor(令人讨厌)解析的完整链接。
例子:
let elem = element(by.css('link[rel="next"]'));
let url = await browser.executeScript('return arguments[0].getAttribute("href");',elem);
推荐阅读
- mongodb - 需要从 mongodb 查询将数据一种格式转换为另一种格式
- javascript - JavaScript Objects is not recognised by it's property
- date - COBOL- 根据年龄查找出生年份
- css - CSS:有一个网格项跨越行中所有剩余的列
- unity3d - 在 Unity 中使用另一个 Rect 裁剪图像
- javascript - redux-saga 不能使用“all”或“fork”,但可以同时使用
- date - 如何使用插入命令在配置单元中插入当前日期
- flutter - 如何为 ImageProvider 提供图像对象(颤振)
- vuex - 使用 vuex4 在 vue3 中进行状态管理失败 - 在代码和框中共享代码
- reactjs - 使用具有可选属性的联合类型作为 React 道具类型时如何获得正确的类型推断