问题标签 [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 投票
2 回答
2830 浏览

google-chrome - 无头 Chrome REPL 不起作用

当我尝试运行时:

变得无限:

Ubuntu 16.04 上的谷歌浏览器 60.0.3112.113

这是Chrome中的错误吗?

0 投票
1 回答
2910 浏览

javascript - Chrome无头渲染对pdf完全错误

我正在尝试使用 puppeteer 将包含多个 nvd3 图表的页面打印为 pdf。通过 Chrome 浏览器使用打印功能时,我得到以下不错的输出(不要介意蓝色边框):

正确的输出

当我尝试通过 puppeteer 使用 chrome headless 访问同一页面时,我得到了这个输出,跨越 3 个页面:

错误的输出

这是我正在使用的代码:

我还尝试将高度和宽度固定为像素值 cm 和 mm,但它不会影响输出。请注意,整个页面的样式是通过页面和使用其打印媒体样式表引导的。我还为打印媒体添加了几个 css 规则(其中蓝色边框)。这些规则之一强制整个页面为 297mmx210mm 大,即 A4 页面的确切大小。

0 投票
1 回答
273 浏览

google-chrome-devtools - DevTools 协议 - Target.getTargets 和请求 /json 端点有什么区别?

根据Chrome DevTools 协议查看器页面

在这种情况下,您可以用自己的实现替换开发者工具前端。您的应用程序可以通过以下请求来发现可用页面,而不是导航到http://localhost:9222的 HTML 页面: http://localhost:9222/json并获取一个 JSON 对象,其中包含有关可检查页面的信息以及 WebSocket 地址您可以使用它们来开始检测它们。

但是,根据 Target Domain 文档,发送消息(通过 websockets{"method": "Target.getTargets"}返回“可用目标列表”:

Target.getTargets # 检索可用目标的列表。

返回对象:

targetInfos array [ TargetInfo ]:目标列表。

有什么区别?

0 投票
0 回答
2686 浏览

python - selenium 可以打开远程无头 chrome 的调试页面吗?

  • 平台:

    • 计算机 A(网格集线器):Ubuntu 14.04
    • 计算机 B(网格节点):Ubuntu 16.04
  • python + Selenium Grid + 无头 Chrome

我做了什么

我正在使用 Selenium Grid - 在计算机 A 中设置了一个集线器,在计算机 B 中设置了一个节点。我可以通过以下 python 代码打开计算机 B 的无头 Chrome:

但是当我添加--remote-debugging-port=9222到时options,终端中运行的进程最终会冻结并抛出错误。

(我将在今天晚些时候在这里发布终端信息......)

我发现了什么

netstat -a | grep localhost | grep ESTABLISHED在计算机 B 上列出了以下信息:

我的尝试证明计算机 B 上的相关端口总是以 开头12,例如 12500、12341、12970...

当我localhost:12970在计算机B上访问时,我以为我找到了我一直在寻找的调试页面,但实际上它与正常的不同:

而一个“正常”的就像:

我想要的是

我可以在选项中添加调试端口吗?如果可以的话,我是否能够打开一个Remote()FireFox(因为仍然无法在 Chrome 中打开调试链接)来远程访问调试页面(在我的情况下,其 url 是localhost:9222),这是用于调试无头 Chrome。

谢谢

有任何想法吗?谢谢!

0 投票
1 回答
338 浏览

javascript - 给定 request.continue() 的循环行为,如何将每个网络请求存储到一个数组中?

我试图在访问页面时获取所有网络请求并将它们存储到数组中。

我的代码如下所示:

我发现问题出在request.continue(). 它为每个获取的请求创建多个迭代,并且对于每个迭代,它显示该请求并将其作为字符串返回。这意味着我最终得到了几个字符串。

问题是我无法将所有这些字符串插入一个数组,所以我最近可以使用它们。我尝试了几个 for 循环,但没有成功。

0 投票
1 回答
1637 浏览

python - Chrome 无头忽略系统代理

编辑:这是演示问题的 youtube 视频:

https://youtu.be/MIZjHKCVr1s

我正在使用 --headless 标志运行带有 chrome 的 selenium,但显然使用 --headless 似乎忽略了系统代理。我之前在 Mac 上测试过它,但它没有绕过代理,但在我的 Mac 上的 Windows 10 VM 上,它似乎绕过了代理。

代码 :

如果我不使用 headless 标志。它显示系统代理的IP,但如果使用它,它会显示我的真实IP。

0 投票
3 回答
8739 浏览

java - 使用无头浏览器进行调试

我有一个WebDriver测试套件,当我在普通和无头浏览器中执行它时,它的运行方式有所不同。有一个元素在无头模式下执行时找不到,但在正常模式下使用相同的代码、相同的驱动程序时找到。我使用这个标志来设置无头模式:

ChromeDriver 2.31并且WebDriver 3.5.2在使用中。我怎么能调试这个?

0 投票
0 回答
721 浏览

java - 无法在无头模式下启动 Chrome

我正在尝试使用Chrome HeadlessSelenium Webdriver 上的模式来测试具有不同参数的脚本
NoSuchElementException- 当通过 xpath 查找时
chrome not reachable- webdriverexception
chrome failed to start-

这是初始化。

xpath 没有问题,因为它在正常模式下工作。

  • 铬版本 60

  • 硒 3.5.0

  • 铬驱动程序 2.32

0 投票
1 回答
6207 浏览

javascript - 与 Google Chromes Puppeteer 反应

尝试使用在我的 Node.js 环境上运行的chrome puppeteer渲染一个反应组件, 我遇到了以下问题:

  • 日志记录element让我在无头 chrome控制台中:console.log(element)=><div id="test-wrapper"></div>
  • testWrapper在终端console.log(testWrapper)=>{}

    /li>

所以试着去做……</p>

…显然会导致错误(node:90555) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Invariant Violation: _registerComponent(...): Target container is not a DOM element.

我觉得即使我设法获得了 DOM 元素,我也在这里遗漏了一些东西来注入反应应用程序。

0 投票
1 回答
1921 浏览

ruby-on-rails - 使用 ChromeDriver、Capybara 和 Docker Compose “拒绝连接”

我正在尝试从 PhantomJS 迁移到 Headless Chrome,但遇到了一些障碍。对于本地测试,我使用 Docker Compose 来启动并运行所有相关服务。为了配置 Google Chrome,我使用了一个将它和 ChromeDriver 捆绑在一起的图像,同时在 port 上提供它4444docker-compose.yml然后,我在这个简化的文件中将它链接到我的应用程序容器,如下所示:

然后,我有一个spec/spec_helper.rb引导测试环境和相关工具的文件。我定义了:headless_chrome驱动程序并将其指向 ChromeDriver 的本地绑定;http://chromedriver:4444. 我很确定以下是正确的:

我们也使用 VCR,但我已将其配置为忽略与 ChromeDriver 使用的端口的任何连接:

我使用 Docker Compose 启动服务,这会触发测试运行程序。该命令几乎是这样的:

稍等片刻,我遇到了第一个失败的测试:

所有规格都有相同的错误。因此,我进入容器自己手动运行测试并捕获它正在测试的 HTML。我将它保存在本地并在我的浏览器中打开它,以受到以下 Chrome 错误页面的欢迎。ChromeDriver 似乎没有评估规范的 HTML,因为它无法访问它,因此它尝试针对此错误页面运行测试。

鉴于上述信息,我在这里做错了什么?我很感激任何和所有的帮助,因为离开 PhantomJS 会为我们解决很多头痛的问题。

非常感谢你。如果您需要更多信息,请告诉我。

在此处输入图像描述