标签: google-chrome-headless

是否可以安装没有X11依赖的Headless Chrome?

我想知道是否有可能以某种方式安装没有X11依赖的Headless Chrome,例如在VM或Docker容器中?目前,当我从Chrome repo安装它时,它会下载许多无用的东西作为依赖项.构建Docker容器需要很长时间,而且还需要额外的空间.

google-chrome headless headless-browser google-chrome-headless

20
推荐指数
0
解决办法
1954
查看次数

打印到PDF时更改默认页眉/页脚

我正在尝试使用Google Chrome替代PhantomJS将HTML呈现为PDF.到目前为止,它对我来说一直很好.我唯一的问题是我没有找到任何方法来翻译以下PhantomJS代码:

page.paperSize = {
  footer: {
    contents: phantom.callback(function(pageNum, numPages) {
      return "Power by MyWebsite. Created on "+formatDate(new Date())+"<span style='float:right'>" + pageNum + " / " + numPages + "</span>";
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

格式化日期与问题中的函数相同如何格式化JavaScript日期

但是,我还没有找到一种方法来在谷歌Chrome中无头复制这种行为.我正在使用来自https://github.com/cyrus-and/chrome-remote-interface的 Chrome远程接口(CDP)

这是我的chrome远程接口代码的概述:

return new Promise(async function (resolve, reject) {
    const url = "<MyURL here>";
    const [tab] = await Cdp.List()
    const client = await Cdp({ host: '127.0.0.1', target: tab });
    await Promise.all([
       Network.enable(),
       Page.enable()
    ]);

    Page.loadEventFired(function () { 
         setTimeout(function () {
             resolve(Page.printToPDF({displayHeaderFooter:true}))); //https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF
         }, …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome google-chrome-headless

19
推荐指数
4
解决办法
1万
查看次数

在无头模式下通过 Google Chrome 下载文件

我正在以“正常”模式在 Cromedrive 中编写代码并且工作正常。当我更改为无头模式时,它不会下载文件。我已经尝试了我在互联网上找到的代码,但没有用。

chrome_options = Options()
chrome_options.add_argument("--headless")
self.driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=r'{}/chromedriver'.format(os.getcwd()))
self.driver.set_window_size(1024, 768)
self.driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')

params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': os.getcwd()}}
self.driver.execute("send_command", params)
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何解决这个问题?

PS:我不一定需要使用 Chomedrive。如果它在另一个驱动器中工作,那对我来说没问题。

python selenium google-chrome selenium-chromedriver google-chrome-headless

19
推荐指数
2
解决办法
2万
查看次数

ubuntu docker 容器中的无头铬

我正在尝试在 ubuntu docker 映像中运行 chromium 的无头实例,但我不断收到错误消息,该系统没有显示器,也没有音频输入或输出

[0307/003516.533150:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
Run Code Online (Sandbox Code Playgroud)

有没有办法禁用 dbus,因为 docker 似乎不支持它,这是我的 Dockerfile 中的行

FROM arm64v8/ubuntu:bionic
RUN apt install -y chromium-browser
RUN apt install -y chromium-drivers

Run Code Online (Sandbox Code Playgroud)

这是我使用的启动线

chromium-browser --no-sandbox --headless --autoplay-policy=no-user-gesture-required --no-first-run --disable-gpu --use-fake-ui-for-media-stream --use-fake-device-for-media-stream --disable-sync index.html
Run Code Online (Sandbox Code Playgroud)

ubuntu chromium docker google-chrome-headless

19
推荐指数
1
解决办法
2万
查看次数

使用puppeteer在循环中抓取多个URL

我有

urls = ['url','url','url'...]
Run Code Online (Sandbox Code Playgroud)

这就是我正在做的事情

urls.map(async (url)=>{
  await page.goto(`${url}`);
  await page.waitForNavigation({ waitUntil: 'networkidle' });
})
Run Code Online (Sandbox Code Playgroud)

这似乎不等待页面加载并快速访问所有网址(我甚至尝试使用page.waitFor)

只是想知道我做了一些根本错误的事情,或者不建议/支持这种类型的功能

web-scraping google-chrome-headless puppeteer

18
推荐指数
2
解决办法
8416
查看次数

Pupeteer - 如何自动接受任何 URL 的 cookie 同意提示?

使用 pupeteer 对网站进行屏幕截图时,会显示 cookie 同意提示。我想在截取屏幕截图之前忽略或接受这些提示。我面临的问题是大多数网站以不同的方式呈现cookie提示,因此很难隔离它们。

如何使用 pupeteer 最好地定位和消除这些提示?

npm google-chrome-headless puppeteer

16
推荐指数
2
解决办法
2万
查看次数

Docker中的Capybara无头镀铬返回DevToolsActivePort文件不存在

我试图配置系统测试,以在硒中使用无头铬.我有以下水豚配置:

# spec/support/capybara.rb

Capybara.server = :puma, { Silent: true }

RSpec.configure do |config|
  config.before(:each, type: :system) do
    driven_by :rack_test
  end

  config.before(:each, type: :system, js: true) do
    driven_by :selenium_chrome_headless, screen_size: [1400, 1400]
  end
end
Run Code Online (Sandbox Code Playgroud)

和以下Dockerfile(没有数据库,因为我正在使用主机):

FROM ruby:2.5.1

RUN apt-get update
RUN apt-get install -y wget git

# Node
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash -
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update

# Essentials
RUN apt-get install -y …
Run Code Online (Sandbox Code Playgroud)

selenium ruby-on-rails capybara google-chrome-headless

15
推荐指数
1
解决办法
4414
查看次数

使用ChromeDriver,Capybara和Docker Compose"拒绝连接"

我正试图从PhantomJS转向Headless Chrome,并遇到了一些障碍.对于本地测试,我使用Docker Compose来启动和运行所有相关服务.要配置谷歌浏览器,我使用的图像将它和ChromeDriver捆绑在一起,同时在端口上提供服务4444.然后我在这个简化的docker-compose.yml文件中将它链接到我的app容器,如下所示:

web:
    image: web/chrome-headless
    command: [js-specs]
    stdin_open: true
    tty: true
    environment:
        - RACK_ENV=test
        - RAILS_ENV=test
    links:
        - "chromedriver:chromedriver"

chromedriver:
    image: robcherry/docker-chromedriver:latest
    ports: 
        - "4444"
    cap_add: 
        - SYS_ADMIN
    environment:
        CHROMEDRIVER_WHITELISTED_IPS: ""
Run Code Online (Sandbox Code Playgroud)

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

Capybara.javascript_driver = :headless_chrome

Capybara.register_driver :chrome do |app|
    Capybara::Selenium::Driver.new(app, browser: :chrome)
end

Capybara.register_driver :headless_chrome do |app|
    capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
    chromeOptions: { args: %w[headless disable-gpu window-size=1440,900] },
)

Capybara::Selenium::Driver.new app,
    browser: :chrome,
    url: "http://chromedriver:4444/",
    desired_capabilities: capabilities
end
Run Code Online (Sandbox Code Playgroud)

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

VCR.configure …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails capybara docker-compose google-chrome-headless

14
推荐指数
1
解决办法
1075
查看次数

如何在Puppeteer中指定浏览器语言

我想es使用Puppeteer 推出一款带有西班牙语的谷歌Chrome浏览器.

我试过puppeteer.launch(args:['--lang=es',...],...)但是没用.

我试过传递环境变量,LANGUAGE=es mocha puppeteer-test.js但它没有用.

我已尝试使用该userDataDir选项并传递带有文件的Preferences文件夹{ "intl": { "accept_languages": "es" } }但浏览器设置 - 语言仍然不显示西班牙语,也window.navigator.languages没有window.navigator.language

我正在使用
Puppeteer 0.11.0
Node 8.4.0
NPM 5.2.0
macOS El Capitan 10.11.6
MacBook Pro Retina,15英寸,2015年中

javascript google-chrome browser-testing google-chrome-headless puppeteer

13
推荐指数
2
解决办法
5331
查看次数

如何使用puppeteer转储WebSocket数据

我想在此页面获取websocket数据https://upbit.com/exchange?code=CRIX.UPBIT.KRW-BTC,其websocket URL是动态的,仅在第一次连接时有效,第二次连接到它时将不再发送数据.

在此输入图像描述

所以我想知道也许无头镀铬可以帮助我监控websocket数据.

有任何想法吗?谢谢!

websocket google-chrome-headless puppeteer

13
推荐指数
3
解决办法
4606
查看次数