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.2(https://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)
| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |