问题标签 [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.
mocha.js - Karma、Mocha、Chrome Headless 和对 url 的点击测试
我正在尝试使用 Karma 和 Chrome Headless 来替换我会使用 CasperJS 和 PhantomJS 完成的测试来加载公共站点以运行端到端点击测试。
这个想法是,这将是针对金丝雀服务器的自动化测试,以确保登录、注册等功能按预期运行。我已经使用 Karma、Mocha、Chai 和 Chrome Headless 启动并运行了简单的测试加载示例,但我无法弄清楚如何通过测试导航到 url,然后检查/单击 DOM 元素。
我还没有找到任何有用的文档或示例来为我指明正确的方向。
phantomjs - 无头浏览器不尊重 matchMedia 查询中的视口
我一直在使用 phantomJS 一段时间,在使用 matchMedia 查询来区分设备类型的网站中使用它时遇到了问题。
有一段时间我认为这是一个幻象问题,但它发生在其他无头浏览器上,如 slimerJS 和 Headless Chrome。
问题是 matchMedia 查询不支持 HB 上的视口。
作为示例,以下步骤重现了这些 HB 中的问题:
- 设置移动视口(例如:736x414)。
- 打开https://josebrandao13.github.io/
- 截图。
结果总是:“我是平板电脑”。这意味着宽度和高度不是大于 768px。
如果您在 Chrome 或 Firefox 开发工具上打开此网站并在手机和平板电脑设备之间切换,matchMedia 会按预期运行。此外,如果我在手机 chrome 上打开它,一切正常。
无头浏览器和 matchMedia 是否存在任何已知问题?
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
. 所以它会弹出浏览器窗口。但它有效并截取了屏幕截图。
所以我的问题:
这只是 Mac OSX Sierra 上 Canary 62 中的一个错误吗?
如果没有,如何解决这个无头方法适用于截图?
更新 1
我又尝试了两件事并取得了成功:
如果我在 Mac 上使用 Chrome 60(稳定版),它可以工作,我可以无头截屏。
如果我在 Ubuntu 上使用 Chrome 60(测试版),它也适用于无头。
因此,唯一不起作用的情况是Canary 62 无头,因为带有浏览器的 Canary 62 确实可以正常工作。确实很奇怪。
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 输出?
我的代码如下:
python - 使用 chrome headless 和 selenium 下载
我正在使用 python-selenium 和 Chrome 59 并尝试自动化一个简单的下载序列。当我正常启动浏览器时,下载工作,但是当我在无头模式下这样做时,下载不起作用。
我什至尝试添加默认路径:
添加默认路径在正常实现中有效,但在无头版本中仍然存在相同的问题。
如何让下载以无头模式开始?
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 显示器。如果我们以无头模式运行它并以我们可以的方式设置分辨率。
javascript - 如何调用 Page.navigate 并触发关联的 Page.loadEventFired?
我正在使用Chrome stable 60 ( https://chromedevtools.github.io/devtools-protocol/1-2/Page/ ) 进行无头。我需要能够做到这一点:
导航到第 1 页
截图1
导航到第 2 页(完成第 1 页后)
截图2
但是,我看不到要打Page.navigate
两次电话,因为Page.loadEventFired
会接上最新的电话。
我不想使用Canary,因为它非常不稳定(屏幕截图甚至无法正常工作)。所以我认为Target
这不是一个选择(如果可以的话)。
像这样以串行方式进行 url 导航的最佳方法是什么?
我查看了https://github.com/LucianoGanga/simple-headless-chrome以了解他们是如何做到的(await mainTab.goTo
)但似乎还无法弄清楚。
google-chrome - 谷歌 chrome 无头浏览器能否用于向最终用户提供 PDF
我希望使用 google chrome 无头浏览器的“打印到 pdf”功能来替换现有的方式(使用 iText)来生成 PDF。
考虑到需要处理的并发调用数量未知,这是一个可行的解决方案吗?
无头浏览器的打印到 pdf 功能是用于企业解决方案的生产以生成 PDF/屏幕截图,还是主要用于测试和开发环境?
如果从单台机器处理多个并发调用会成为一个问题,那么基于 AWS lambda 的无服务器解决方案是否是解决此问题的好方法,因为它具有可扩展性和执行并行处理的能力?