c# - 不知道为什么使用 headless (headless)浏览器

标签 c# selenium selenium-webdriver webdriver headless

我们只是在没有使用 headless (headless)浏览器的情况下实现了 CI,而是使用了实际的浏览器。因此,一旦开发团队 checkin 了新代码。我们的烟雾自动化代码在自动机器上作为后台进程运行并发送结果。如果出现任何故障,它甚至会发送屏幕截图。我们没有得到的是,使用 headless (headless)浏览器对上述过程有什么好处。我们需要我们的烟雾脚本来获得这种覆盖。比如说提交一个可以在 5 分钟内运行的大型表单,其中包含选择、日历、上传等控件,而不是简单的网页加载。

最佳答案

一般来说,“ headless (headless)浏览器”是一个模棱两可的术语。人们用它来指代设计为 headless (headless)运行的浏览器,但也指通常需要真实显示器但运行在允许它与虚拟显示器一起运行的配置中的浏览器。后者的一个实例将运行带有 Xvfb 的 Firefox。 (我所采取的角度是描述性的:这就是人们谈论 headless (headless)浏览器的方式。我不是在谈论这是否正确,这将是一个规定性的角度。)

我通常不会使用那些设计为 headless (headless)运行的浏览器来运行测试。为什么?

  • 每当我比较 headless (headless)浏览器和 Chrome 之间的性能时,性能提升非常有限,而且这是天真的完成的,没有尝试优化 Chrome 的设置以提高速度。 (例如,我可以想象用户数据在 ram ( /dev/shm ) 中,但我没有尝试过。)
  • 归根结底,我必须证明我的软件在真人使用的真实浏览器中运行。普通人不会使用设计为 headless (headless)的浏览器来运行我的软件。 没有快捷方式来检查 Web 应用程序是否可以与特定浏览器一起使用。 您必须使用目标浏览器,故事结束。即使在浏览器 X 版本 Y 中运行代码也是 不是 保证代码将在浏览器 X 版本 Z 中工作(其中 Z 与 Y 不同)。我有一个应用程序在 Chrome X-1 和 Chrome X+1 中运行良好,但在 Chrome X 中严重崩溃(其中 X 是我现在不记得的某个版本号)。除了在 Chrome X 中进行的测试外,没有其他任何东西可以揭示这一点。无论 headless (headless)浏览器基于什么,它都不能替代在您的应用程序所针对的实际浏览器中进行测试。
  • 相反, headless (headless)浏览器可能有自己的怪癖,而这些怪癖不会出现在其他浏览器中。我最近不得不弄清楚为什么 PhantomJS 在处理字体细微差别时的行为与 Firefox 或 Chrome 不同。找出用户因为不使用 headless (headless)浏览器而不会遇到的怪癖所花费的时间可能会花在找出用户在使用人们通常使用的浏览器时会遇到的怪癖上。

  • 我并不是说设计为 headless (headless)运行的浏览器没有什么用处,但对于测试,我通过了。

    当我运行本地测试时,我确实会 headless (headless)地运行“headful”浏览器。我不希望测试窗口出现在我的桌面上,除非我真的需要它。

    关于c# - 不知道为什么使用 headless (headless)浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32332608/

    相关文章:

    C# 继承构造函数子和父 ??

    java - 为这个庞大的列表编写更紧凑的代码

    javascript - nightwatchjs 并行模式 selenium hub docker compose

    java - 如何使用Selenium选择 “style”的值

    javascript - 使用 jquery/javascript 验证日期时间 asp net 文本框

    c# - 在 Windows Phone 8.1 XAML 中检测停用和应用程序关闭

    c# - ASP MVC 3 - 来自 ViewModel 的图表

    python - 如何使用 Selenium 和 Python 在 https ://e. mail.ru/login 中发送密码元素内的文本

    python - 为什么我在 Selenium 中会出现这个简单的错误?

    java - 需要找到有内部文本的element元素