Automation 如何修改http头

Automation 如何修改http头,automation,http-headers,protractor,Automation,Http Headers,Protractor,我正在自动化UI测试。API由oAuth保护。所以要点击URL,让我们说 浏览器必须设置了授权密钥作为标头,并且值必须是有效的令牌 对于手动测试,我使用设置标题。 (有人能告诉我requestly内部是如何做的,这样来自chrome的每个请求都会得到requestly设置的头值吗?) 有没有办法通过编程设置标题值 PS:我使用curl调用誓言url来获取有效的令牌,并将令牌值设置为env变量。我也用邮递员得到同样的东西。但所有这些都不会影响从浏览器调用时的效果。您不能很容易地做到这一点,因为Ch

我正在自动化UI测试。API由oAuth保护。所以要点击URL,让我们说 浏览器必须设置了授权密钥作为标头,并且值必须是有效的令牌

对于手动测试,我使用设置标题。 (有人能告诉我requestly内部是如何做的,这样来自chrome的每个请求都会得到requestly设置的头值吗?)

有没有办法通过编程设置标题值


PS:我使用curl调用誓言url来获取有效的令牌,并将令牌值设置为env变量。我也用邮递员得到同样的东西。但所有这些都不会影响从浏览器调用时的效果。

您不能很容易地做到这一点,因为Chrome不支持它(请参阅)


就我个人而言,我会使用类似request()和基本断言的方法来进行此测试,而不是通过带有量角器的浏览器。

您无法在selenium中直接操作http头。您需要使用代理来执行这些操作。是selenium世界中流行的代理。您可以在量角器测试中使用节点包装器来完成此操作。我添加了一个示例部分,介绍如何修改我使用的标题,以及如何通过量角器进行API测试。因此,我在OAuth端点上执行GET,将令牌存储在一个变量中,然后在其余的API调用中执行
request.GET(url.set('Authorization',auth.tokenType+''+auth.token)


因此,您可以使用类似supertest的方法来获取令牌,然后
browser.manage().addCookie()
在您的浏览器会话中设置令牌。

@Sam请求在此处编写

不,当前无法通过编程设置标题值。现在它必须是静态的。考虑到出现了多少用例,这是实现该特性的长期计划。但这里是你能做的

你可以用叉子叉。发生实际头修改的代码位于内部。方法名称为
BG.Methods.modifyHeaders
。请继续编写您自己的逻辑以生成标题值并修改它

来自

以下标头当前未提供给onBeforeSendHeaders事件。此列表不保证完整或稳定

  • 授权书
  • 缓存控制
  • 联系
  • 内容长度主机
  • 如果修改自
  • 如果没有匹配
  • 中频范围
  • 部分数据杂注
  • 代理授权
  • 代理连接
  • 传输编码

这个答案可能对您没有用处,因为
授权
无法修改。但我还是添加了这个答案,作为一种可行的方法。

@Viad感谢您的建议。有一件事:我必须自动化UI测试,目前正在使用量角器框架来实现这一点。那么,有什么方法可以与量角器集成呢?我想,就把它放在量角器规范中吧。确保在量角器承诺实现中包装请求,因为它只会等待量角器承诺完成。不过,这就像用叉子端着勺子喝汤一样:谢谢你的回应。将尝试使用它,并让您知道它是否有效。