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