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

2025年3月2日:selenium問題が全体的に解決するかもしれない記事

 メモリ省力化を含め、いろんな便利機能をサンプルコード付きでまとめてみた。

Seleniumを使うときの基本設定Tipsまとめ
Seleniumを使うときの基本設定Tipsまとめ seleniumを使うときに「大体どんなスクリプトにも入れる基本設定」をまとめてみた。 サンプルコードはpythonだが、他言語でもseleniumは同じなので使えるはず。ChromeDriverManagerで自動でChrom...

対応

 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オプションについて。ディスクのメモリスペースを使うようにする。