Aws Lambda Ruby Crawler selenium chrome 驱动程序:“未知错误:无法发现 chrome 中打开的窗口”

Hoo*_*nki 5 ruby selenium-chromedriver aws-lambda

我想将我的爬网程序部署到“Aws Lambda 环境”。我在 lambda-ci ( https://github.com/lambci/docker-lambda/tree/master/ruby2.5 )中测试了我的代码。结果就是成功。

但是当我尝试在 aws lambda 中部署代码时,我收到了此错误。“未知错误:无法在 Chrome 中发现打开的窗口” 在此输入图像描述

我的项目结构是

  /project
    lambda_hanlder.rb
    vender/
Run Code Online (Sandbox Code Playgroud)

我在 aws lambda 层上上传了 headless-chrome、chromedriver。

headless-chrome 版本是 v1.0.0-55 ( https://github.com/adieuadieu/serverless-chrome )

chromedriver版本是2.4.2https://chromedriver.storage.googleapis.com/2.42/chromedriver_linux64.zip

这是我的 ruby​​ 代码设置

Selenium::WebDriver::Chrome::Service.driver_path = '/opt/bin/chromedriver'
    options = Selenium::WebDriver::Chrome::Options.new(args: ['--headless', '--no-sandbox', '--disable-dev-shm-usage',
                                                              '--disable-gpu', '--disable-gpu-sandbox'])
    options.binary = '/opt/bin/headless-chromium'
    options.add_argument('window-size=1920x1080')
    options.add_argument('"user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"')
Run Code Online (Sandbox Code Playgroud)

我的 gem 文件是

GEM
  remote: https://rubygems.org/
  specs:
    archive-zip (0.12.0)
      io-like (~> 0.3.0)
    childprocess (3.0.0)
    chromedriver-helper (2.1.1)
      archive-zip (~> 0.10)
      nokogiri (~> 1.8)
    ethon (0.12.0)
      ffi (>= 1.3.0)
    ffi (1.12.2)
    io-like (0.3.1)
    logger (1.4.2)
    mini_portile2 (2.4.0)
    multi_json (1.14.1)
    nokogiri (1.10.8)
      mini_portile2 (~> 2.4.0)
    rubyzip (2.2.0)
    selenium-webdriver (3.142.7)
      childprocess (>= 0.5, < 4.0)
      rubyzip (>= 1.2.2)
    typhoeus (1.3.1)
      ethon (>= 0.9.0)
Run Code Online (Sandbox Code Playgroud)

我不知道是什么问题。这个问题是(无头,chromedriver)版本兼容性吗?但是在 lambda-ci-ruby 环境中,我没有收到这些错误。我怎么解决这个问题?

小智 3

添加

options.add_argument("--single-process")
Run Code Online (Sandbox Code Playgroud)

为我解决了这个问题。

我用过了:

Driver: 2.41

Chromium :  68.0.3440.84
Run Code Online (Sandbox Code Playgroud)