如何使用量角器验证HTML属性是否包含绝对URL或相对URL?

时间:2019-01-28 10:57:42

标签: node.js protractor

我正在使用Protractor测试Web应用程序,并且我注意到,每当我尝试读取href修饰符时,Protractor都会将该值视为绝对URL。这使我无法验证应用程序呈现的URL确实是绝对的。

假设我要有一个绝对URL,包括我的meta标签中的域:

<link rel="next" href="https://www.example.com/path-to-page">

事实证明,当我在量角器中读取此元素时,无论实际值是多少,我仍然会获得一个绝对URL。

假设后端(https://www.example.com)实际上呈现以下标记:

<link rel="next" href="/path-to-page">

使用量角器访问它

element(by.css('link[rel="next"]')).getAttribute('href')

产生https://www.example.com/path-to-page而不是/path-to-page,这是我使用浏览器或curl查看页面源时的实际值。

我发现这种方法过分热心。它可以隐藏实际的错误。这是错误还是功能?在属性中获取实际路径的最佳方法是什么?

我找到了this issue on Github,但是它的关闭处有一条评论,表明报告者寻求有关Stack Overflow的帮助。

请记住,我不仅要检查URL的路径部分。我想确认该属性确实包含所有内容。协议,域,路径。如果我的后端以不同的方式呈现它,则Protractor仍会假装它是正确的,因为它会根据页面的上下文确定域。

1 个答案:

答案 0 :(得分:1)

browser.executeScript();与Javascript结合使用会给您实际的href,而不是Protractor(烦人的)解析的完整链接。
示例:

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