前提・実現したいこと
Ruby on RailsのRakeタスクでスクレイピングするプログラムを書いています。
SeleniumWebdriverからGoogle Chromeをヘッドレス起動して使いたいと思っています。
発生している問題・エラーメッセージ
Rakeタスクを実行したところ、以下のようなエラーが出てしまい、Chromeを起動することができません。
Selenium::WebDriver::Error::UnknownError: unknown error: cannot find Chrome binary
該当のソースコード
Ruby
1namespace :example do 2 desc "スクレイピング" 3 4 task :get do 5 caps = Selenium::WebDriver::Remote::Capabilities.chrome('chromeOptions' => {binary: "/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary", args: ["--headless", "--disable-gpu", "window-size=1280x800"]}) 6 session = Selenium::WebDriver.for :chrome,:desired_capabilities => caps 7 session.navigate.to "https://example.com" 8 records = session.find_elements(:css, "table") 9 session.quit 10 11 #その後のデータ処理など 12 13 end 14end 15
試したこと
エラーの内容からChromeの実行ファイルを認識できないのだと解釈し、以下のことを試しました。
Google Chrome(Stable)のbinaryを直接指定する→cannot find Chrome Binary
ChromeDriverのバージョンがあっているか確認する→問題なし
Chrome Canaryのbinaryを指定する→cannot find Chrome Binary
Chrome DriverをChrome Canaryに合わせたバージョンに置き換える→cannot find Chrome Binary
この際以下のサイトを参考にしました。
https://objectpartners.com/2017/04/13/how-to-install-and-use-headless-chrome-on-osx/
https://thr3a.hatenablog.com/entry/20190810/1565414905
補足情報(FW/ツールのバージョンなど)
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin19]
Rails 6.0.1
ChromeDriver 81.0.4009.0 (b35f3c6122bfa8c6dc699dad225bee7300178ed6-refs/heads/master@{#727523})
Google Chrome: 81.0.4008.0(Official Build)canary (64 ビット)
Google Chrome(Stable): 79.0.3945.88(Official Build) (64 ビット)
macOS Catalina 10.15.1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。