我正在使用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仍会假装它是正确的,因为它会根据页面的上下文确定域。
答案 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);