在UI自动化测试中修改HTTP(s)请求中的头

2021年12月14日修改HTTP(S)请求在UI自动化测试中9分钟阅读,分享,关于作者NAFEES是一个热衷于学习新事物的IT专业学生.

他的座右铭是“随时准备学习、忘却和重新学习”电子邮件时事通讯你(粉碎)的电子邮件.

受到19万人的信任.

快速总结↬ 能够在测试环境中修改头是一件非常棒的事情.

它允许控制您的应用程序,因为您可以绕过身份验证、设置cookie等等.

在本文中,Nafees Nehar探索了一些允许在自动化测试设置中修改头的方法.

有多种方法可以修改标题.

您可以使用浏览器扩展或代理应用程序(如Charles和Proxyman)来修改标题,这些应用程序拦截请求并允许您通过包含标题来修改响应.

但首先,让我们从头开始.

什么是HTTP(s)头?是客户机或服务器可以用来传递附加信息以及HTTP(s)请求或响应的键值对.

它们保存有关正在发送的数据的附加信息.

HTTP(s)头包含不区分大小写的名称,后跟冒号(:),然后是其值.

字段名不区分大小写,但字段值区分大小写.

标头可以有多个值,这些值之间用逗号分隔.

修改标题:这有什么帮助?我正在开发一个应用程序,它打开了提供的网页,然后给用户一个修改元素、添加事件、添加分析等选项.

不需要任何代码.

这是通过在iframe中加载页面并在其上为用户提供各种选项来实现的.

我尝试了大量的网站,以了解它们在iframe中的行为.

我观察到,由于x-frame-options和内容安全策略头,大多数网站都不能在iframe中工作.

几乎所有网站的标题X-frame-options都设置为deny或sameorigin,因此浏览器不允许在iframe中加载网页,或者在任何跨源请求尝试在iframe中加载网页时不允许加载网页.

此外,内容安全策略标头具有防止此情况发生的帧祖先指令.

在iframe中加载页面是非常重要的,我在互联网上四处寻找加载页面的方法.

很明显,我需要覆盖X-frame-options标题以allowall或完全删除它.

当时我偶然发现了Requestly扩展,它给了我一个功能,可以通过匹配页面URL来修改X-frame-options头,从而允许我在调试时覆盖X-frame-options头.

那是我第一次看到网络头的威力.

它们携带有关正在传输的数据的数据.

修改通过浏览器的流量标题的功能是一个很好的工具.

除了覆盖X-frame-options之外,您还可以删除标题以最小化在线跟踪、覆盖内容安全策略标题、生产中的测试站点等.

在测试web应用程序时,修改标题提供了一个很好的技巧:测试应用程序的来宾模式.

可以使用标题设置cookies.

测试应用程序的某些部分,这些部分在默认情况下是禁用的,并且可以通过传递自定义请求头来启用.

测试与标题相关的不同测试用例.

通过传递授权标头绕过应用程序中的身份验证流.

当我开始了解web应用程序的自动测试时,我突然想到,修改标题应该是其中的一项功能,因为它在web应用程序测试中具有巨大的适用性.

因此,我决定写这篇文章来阐明在自动化测试中修改标题的方法.

跳伞后更多!继续阅读下面的内容↓ 了解有关前端、设计和用户体验的有用提示.

订阅并获取“智能界面设计检查表”——一个免费的PDF文档,其中包含150多个问题,在设计和构建几乎任何东西时都可以问自己.

你每周发一次(惊人的)电子邮件.

有关的有用提示.

受到19万友好人士的信任.

Selenium被广泛用作web应用程序端到端测试的测试自动化框架.

它是在2004年开发的.

最初,Sel() .

forBrowser(“chrome”).

设置颜色选项(选项).

build().

//使用请求共享列表功能//importRequestlySharedList(驱动程序,)导入Selenium中的规则.

导入请求共享列表(驱动程序,'https://app.

requestly.

io/rules/#sharedList/1626984924247-添加标题(例如“).

可以找到更多信息.

限制它提供了一个npm包,将模块仅限于JavaScript.

必须手动创建共享列表才能使用Selenium中的规则,因此无法通过为Selenium自动化测试编写的代码来控制这些规则.

方法3:使用Puppeter是Google开发的一个节点库,它提供了一个高级API,通过DevTools协议控制headless Chrome或Chrome.

它也可以配置为使用全铬(非无头)或铬.

当谈到浏览器自动化设置时,Selenium会自动出现在脑海中,但自从Puppeter出现以来,它被广泛用于web抓取.

它比Selenium更能控制chrome,这可能是因为谷歌对它的支持.

同样由于同样的原因,它排除了运行浏览器的外部驱动程序的需要.

用法常量puppeter=require('puppeter').

(async()=>{const browser=await puppeter.

launch().

const page=await browser.

newPage().

await page.

goto(''). 等待页面.屏幕截图({path:'example.

png'}).等待浏览器.close().})(). 修改页面的标题.

setExtraHTTPHeaders(headers)方法可用于设置标头.

它还可以修改和删除现有的标题.

一旦使用页面的组合截获请求.

setRequestInterception(true)和page.on().等待页面.setRequestInterception(true).

页on('request',request=>{//Override headers const headers=Object.

assign({},request.

headers(),{foo:'bar',//设置“foo”头原点:未定义,//删除“origin”头}).

要求continue({headers}).}).限制木偶演员目前仅限于铬合金.

它不能用于跨浏览器测试.

与硒相比,它的群落较小.

社区中似乎有更多人支持硒.

它只支持JavaScript.

结论在测试环境中,修改网络头恰好是一个非常强大的工具.

这比本文所能涵盖的内容要多得多.

我试图介绍一些在UI自动化测试中修改头的最简单方法.

基于您使用的用例和语言,每种方法都有一些优点.

以下是一些首选项:如果您想在Python中使用Selenium,请选择Selenium Wire,因为它在Selenium Webdriver之上提供了许多特性.

如果您只想在chrome上测试,请选择Puppeter,因为它支持google,并且支持所有功能,包括修改标题.

如果您使用Selenium并希望进行跨浏览器测试,则更愿意添加扩展以模拟SeleniumWebDriver中的测试.

如果您的用例要求您在运行时注入脚本或重定向网络资源(除了修改头),那么Requestly是一个理想的选择.

希望本文能让您深入了解如何在自动化web应用程序测试设置中修改标题.

更多资源(vf、yk、il)探索更多.

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/145955.html

(0)