首页 > 解决方案 > 如何使用量角器验证 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 仍然会假装它是正确的,因为它会根据页面的上下文来计算域。

标签: node.jsprotractor

解决方案


与 Javascript 一起使用browser.executeScript();将为您提供实际的 href,而不是 Protractor(令人讨厌)解析的完整链接。
例子:

let elem = element(by.css('link[rel="next"]'));
let url = await browser.executeScript('return arguments[0].getAttribute("href");',elem);

推荐阅读