问题标签 [google-chrome-headless]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
440 浏览

mocha.js - Karma、Mocha、Chrome Headless 和对 url 的点击测试

我正在尝试使用 Karma 和 Chrome Headless 来替换我会使用 CasperJS 和 PhantomJS 完成的测试来加载公共站点以运行端到端点击测试。

这个想法是,这将是针对金丝雀服务器的自动化测试,以确保登录、注册等功能按预期运行。我已经使用 Karma、Mocha、Chai 和 Chrome Headless 启动并运行了简单的测试加载示例,但我无法弄清楚如何通过测试导航到 url,然后检查/单击 DOM 元素。

我还没有找到任何有用的文档或示例来为我指明正确的方向。

0 投票
1 回答
194 浏览

phantomjs - 无头浏览器不尊重 matchMedia 查询中的视口

我一直在使用 phantomJS 一段时间,在使用 matchMedia 查询来区分设备类型的网站中使用它时遇到了问题。

有一段时间我认为这是一个幻象问题,但它发生在其他无头浏览器上,如 slimerJS 和 Headless Chrome。

问题是 matchMedia 查询不支持 HB 上的视口。

作为示例,以下步骤重现了这些 HB 中的问题:

  1. 设置移动视口(例如:736x414)。
  2. 打开https://josebrandao13.github.io/
  3. 截图。

截屏

结果总是:“我是平板电脑”。这意味着宽度和高度不是大于 768px。

如果您在 Chrome 或 Firefox 开发工具上打开此网站并在手机和平​​板电脑设备之间切换,matchMedia 会按预期运行。此外,如果我在手机 chrome 上打开它,一切正常。

无头浏览器和 matchMedia 是否存在任何已知问题?

0 投票
0 回答
993 浏览

javascript - 使用 chrome-remote-interface 的随机空白屏幕截图

我在我的 Macbook Pro 10.12.5 上遵循这里的教程:

https://medium.com/@dschnr/using-headless-chrome-as-an-automated-screenshot-tool-4b07dffba79a

下面是我的代码:

这是我的所有版本:

  • “铬启动器”:“^0.4.0”

  • “铬远程接口”:“^0.24.3”

  • “极简主义”:“^1.2.0”

  • 谷歌浏览器 62.0.3181.0 金丝雀

我的屏幕截图 output.png 是空白的(7KB),它似乎在几天前随机发生,但现在几乎一直是空白的。// await Emulation.forceViewport({x: 0, y: 0, scale: 1});请注意,由于错误,我不得不注释掉(node:1304) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Emulation.forceViewport is not a function

这是我跑步时发生的事情:

所以它确实设置了屏幕和除空白屏幕截图之外的所有内容。

使屏幕截图始终如一地工作的唯一方法是使用以下代码:

请注意,现在我正在使用chrome-launcher但也删除headless. 所以它会弹出浏览器窗口。但它有效并截取了屏幕截图。

所以我的问题:

  1. 这只是 Mac OSX Sierra 上 Canary 62 中的一个错误吗?

  2. 如果没有,如何解决这个无头方法适用于截图?

更新 1

我又尝试了两件事并取得了成功:

  1. 如果我在 Mac 上使用 Chrome 60(稳定版),它可以工作,我可以无头截屏。

  2. 如果我在 Ubuntu 上使用 Chrome 60(测试版),它也适用于无头。

因此,唯一不起作用的情况是Canary 62 无头,因为带有浏览器的 Canary 62 确实可以正常工作。确实很奇怪。

0 投票
2 回答
9050 浏览

javascript - 如何通过 Headless Chrome Runtime.evaluate 在终端中获取 console.log 输出

我在这里关注这个问题:

https://github.com/cyrus-and/chrome-remote-interface/issues/105

但我似乎无法console.log在 Mac 终端中获得输出。它可能在我看不到的 Chrome Devtools 窗口中。

那么如何通过 Runtime.evaluate 表达式在 Mac 终端中获取 console.log 输出?

我的代码如下:

0 投票
11 回答
63163 浏览

python - 使用 chrome headless 和 selenium 下载

我正在使用 python-selenium 和 Chrome 59 并尝试自动化一个简单的下载序列。当我正常启动浏览器时,下载工作,但是当我在无头模式下这样做时,下载不起作用。



我什至尝试添加默认路径:

添加默认路径在正常实现中有效,但在无头版本中仍然存在相同的问题。

如何让下载以无头模式开始?

0 投票
1 回答
2532 浏览

selenium - 无头模式下的 Selenium FindElement 和 Chrome

遵循此建议并仅使用这些参数以无头模式启动 chromedriver.exe

chromedriver 无形打开。但是 Selenium 的FindElement()命令在 headless Chrome 页面上没有找到任何东西。相反,它抛出了这个异常:

WebDriver.dll 中出现“OpenQA.Selenium.NoSuchElementException”类型的异常,但未在用户代码中处理

附加信息:没有这样的元素:无法找到元素:

Q1:有没有人在 Chrome 的 headless 模式下成功运行 Selenium 命令?

Q2:您是否能够FindElement与在无头模式下运行的 chromedriver 一起使用?如果是,你是怎么做到的?


在阅读更多之后,也许有必要沿着这些思路做一些事情?将此添加到 Chrome 启动选项中,然后将 chromedriver 连接到它?
"remote-debugging-port=9222"
但是使用该选项 IWebDriver 和 chromedriver 不会打开。


背景信息:回答,你为什么要这样做?主要原因是测试作为 CI 的一部分运行。这些是在 VM 上运行的测试,可能不支持 1080p 显示器。如果我们以无头模式运行它并以我们可以的方式设置分辨率。

0 投票
2 回答
1976 浏览

javascript - 如何调用 Page.navigate 并触发关联的 Page.loadEventFired?

我正在使用Chrome stable 60 ( https://chromedevtools.github.io/devtools-protocol/1-2/Page/ ) 进行无头。我需要能够做到这一点:

  1. 导航到第 1 页

  2. 截图1

  3. 导航到第 2 页(完成第 1 页后)

  4. 截图2

但是,我看不到要打Page.navigate两次电话,因为Page.loadEventFired会接上最新的电话。

我不想使用Canary,因为它非常不稳定(屏幕截图甚至无法正常工作)。所以我认为Target这不是一个选择(如果可以的话)。

像这样以串行方式进行 url 导航的最佳方法是什么?

我查看了https://github.com/LucianoGanga/simple-headless-chrome以了解他们是如何做到的(await mainTab.goTo)但似乎还无法弄清楚。

0 投票
1 回答
644 浏览

selenium-chromedriver - 无法使用 Selenium 在 Windows 7 中启动 Chrome 无头浏览器

我面临的错误

0 投票
1 回答
286 浏览

google-chrome - 谷歌 chrome 无头浏览器能否用于向最终用户提供 PDF

我希望使用 google chrome 无头浏览器的“打印到 pdf”功能来替换现有的方式(使用 iText)来生成 PDF。

考虑到需要处理的并发调用数量未知,这是一个可行的解决方案吗?

无头浏览器的打印到 pdf 功能是用于企业解决方案的生产以生成 PDF/屏幕截图,还是主要用于测试和开发环境?

如果从单台机器处理多个并发调用会成为一个问题,那么基于 AWS lambda 的无服务器解决方案是否是解决此问题的好方法,因为它具有可扩展性和执行并行处理的能力?

0 投票
1 回答
444 浏览

google-chrome - 将 headless chrome 作为恶魔运行并将给定的链接保存为 pdf

伙计们,我想在 docker 容器中作为恶魔运行 headless chrome 并发送指向 chrome 的链接。它应该使用这个链接并制作一个pdf。

我找到了一张很好的图片。它可以帮助我在后台运行 chrome。但我仍然不知道如何发送链接以及如何说 chrome,请将网页另存为 PDF。

我知道如何在本地保存为pdf,google有一个很好的教程

我会感谢你的帮助,希望有人这样做过