当前位置: 首页 > 面试题库 >

不确定为什么使用无头浏览器

池麒
2023-03-14
问题内容

我们只是在不使用无头浏览器的情况下实施CI,而是使用实际的浏览器。因此,一旦开发团队签入了新代码,我们的烟雾自动化代码将在汽车机器上作为后台进程运行并发送结果。如果有任何故障,它甚至可以跨屏幕截图发送。我们没有得到的是,使用无头浏览器进行上述处理的好处是什么。我们需要我们的烟雾脚本来获得此覆盖范围。假设提交了一个庞大的表单,该表单可以在5分钟内使用“选择”,“日历”,“上载”等控件运行,而不是简单地加载网页。


问题答案:

通常,“无头浏览器”是一个模糊的术语。人们使用它是指 旨在
无头运行的浏览器,也指通常需要真实显示但在允许其与虚拟显示一起运行的配置中运行的浏览器。后者的一个实例将是使用Xvfb运行Firefox。(我所用的角度是
描述性的 :这是人们谈论无头浏览器的方式。我不是在谈论这是否正确,这只是一个 规定性的 角度。)

我通常不会使用旨在无头运行的浏览器进行测试。为什么?

  1. 每当我在无头浏览器和Chrome之间进行性能比较时,性能提升都是非常适度的,这是幼稚的,没有尝试优化Chrome的设置以提高速度。(例如,我可以想象用户数据位于ram(/dev/shm)中,而我没有尝试过。)

  2. 最终,我必须证明我的软件可以在真实的人使用的真实浏览器中运行。普通人不会使用无头设计的浏览器来运行我的软件。 没有捷径可用来检查Web应用程序是否可与特定的浏览器一起使用。 您必须使用目标浏览器,故事的结尾。即使在浏览器X版本Y中运行代码 也不 确保该代码将在浏览器X版本Z(其中Z与Y不同)中运行。我有一个可以在Chrome X-1和Chrome X + 1上正常运行的应用程序,但是在Chrome X上崩溃严重(其中X是我现在不记得的某个版本号)。除了在Chrome X中进行的测试外,其他都没有发现这一点。无论无头浏览器基于什么,它都不能替代您的应用程序所针对的实际浏览器中的测试。

  3. 相反,无头浏览器可能具有其自身的怪癖,而这些怪癖不会出现在其他浏览器中。最近,我不得不弄清楚为什么PhantomJS在处理字体细微之处时表现得与Firefox或Chrome不同。花费的时间搞清楚怪癖用户 不会 遇到,因为它们不使用无头的浏览器可以花搞清楚的怪癖,当他们使用的浏览器,人们通常使用的用户都会遇到。

我并不是说设计为无头运行的浏览器没有什么用,但是我通过了测试。

当我运行本地测试时,我会无头运行“ headful”浏览器。除非确实需要,否则我不希望测试窗口显示在桌面上。



 类似资料:
  • gRPC基于HTTP/2,浏览器广泛支持HTTP/2(假设)。因此,我觉得从浏览器使用gRPC应该没有问题。 然而,很明显有一个问题。协议grpc web是不同的,因为“由于浏览器限制”而存在。还有许多博客文章描述了为让gRPC从浏览器工作而部署的复杂技术堆栈。 我忽略了实际的问题——为什么gRPC不只是在浏览器上工作?

  • 从这个Bugzilla线程(还有)可以看出,Firefox并不总是在POST请求中发送Origin头。RFC声明不应在某些未定义的“隐私敏感”上下文中发送。Mozilla在这里定义了这些上下文。 我很想知道,这些是不是Firefox不会发送Origin头的唯一情况。据我所知,它也不会在跨源POST请求中发送它(尽管Chrome和Internet ;Explorer会),但我不能在文档中确认这一点。

  • 问题内容: 我花了一天的时间研究可用于完成以下任务的图书馆: 检索网页的全部内容(例如在后台),而不向视图渲染结果。 例如,lib应该支持触发ajax请求的页面,以便在加载初始HTML之后加载一些其他结果数据。 从生成的html中,我需要获取xpath或CSS选择器形式的元素。 将来我可能还需要导航到下一页(触发事件,提交按钮/链接等) 这是我尝试未成功的尝试: Jsoup:效果很好,但不支持ja

  • 我正在研究SAML和SSO,看起来使用SAML的应用程序需要是一个web应用程序,并且依赖于浏览器。 有人能告诉我为什么吗? 我对SAML的有限知识告诉我,SAML依赖于会话和cookie,这在桌面应用程序或移动应用程序中是不可用的。这是唯一的原因吗?你能告诉我更多的细节吗?

  • 问题内容: 我花了一天的时间研究可用于完成以下任务的图书馆: 检索网页的全部内容(例如在后台),而不向视图渲染结果。 例如,lib应该支持触发ajax请求的页面,以便在加载初始HTML之后加载一些其他结果数据。 从生成的html中,我需要获取xpath或CSS选择器形式的元素。 将来我可能还需要导航到下一页(触发事件,提交按钮/链接等) 这是我尝试未成功的尝试: Jsoup:效果很好,但不支持ja

  • 使用: Angular CLI在Chrome中默认运行测试,这很好,但是如果我需要在仅控制台环境(无头浏览器)中运行它们呢? 如果我可以在每次运行它时指定是否想要无浏览器,那就太好了,所以类似于: 编辑: 运行PhantomJS我得到了以下信息: PhantomJS 2.1.1 (Linux 0.0.0)错误类型错误:useValue,useFactory,数据不可迭代!http://localh