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

対応

 rubyでseleniumインスタンス(Selenium::WebDriver::Chrome::Options)のメソッドを使う際に、引数に省メモリ化するための引数をつける。

    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)

参考

・全体的に参考にさせていただいた。

・disable-gpuオプションについて。将来的にはこれはいらなくなるらしい。

・no-sandboxオプションについての記事。つまりはセキュリティ機能をオフにするということらしい。

・disable-dev-shm-usageオプションについて。ディスクのメモリスペースを使うようにする。