メモリ省力化設定を入れて「Selenium::WebDriver::Error::UnknownError: unknown error: session deleted because of page crash」が出ないようにする

前回記事

spreadthec0ntents.com

対応

seleniumの引数に省メモリ化するための引数をつける

    options = Selenium::WebDriver::Chrome::Options.new
  
    # メモリ省力化設定

    # コマンドラインからchromeを開く。GUIよりこっちの方が軽い。
    options.add_argument('--headless')
    # 「暫定的なフラグ」らしい。。
    options.add_argument('--disable-gpu')
    # セキュリティ対策などのchromeに搭載してある保護機能をオフにする。
    options.add_argument('--no-sandbox')
    # ディスクのメモリスペースを使う。
    options.add_argument('--disable-dev-shm-usage')
    # リモートデバッグフラグを立てる。
    options.add_argument('--remote-debugging-port=9222')

    @driver = Selenium::WebDriver.for :chrome, options: options

上記でダメならchromeのウィンドウサイズを小さくする

 ただし、これをやると、画面に描画される要素が少なくなり、seleniumの動きにも一工夫いる可能性があるので注意。

driver.set_window_size(950, 800)

参考

  • 全体的に参考にさせていただいた。 qiita.com
  • disable-gpuオプションについて。将来的にはこれはいらなくなるらしい。 developers.google.com
  • no-sandboxオプションについて。つまりはセキュリティ機能をオフにするということ。 costum.blog59.fc2.com
  • disable-dev-shm-usageオプションについて。ディスクのメモリスペースを使うようにする。 nulab.com