こんにちは
保木本 ( @oh_rusty_nail ) です。
手元で動かしてみたところ、指定したxpathで要素を取得する箇所で失敗(elements.sizeが0になりエラーが出力される)ため次のように修正しました。
Seleniumを使うのであれば、find_elementsで拾ってくるのが良いと思いました。
- elements = html_doc.xpath(xpath)
+ elements = driver.find_elements(xpath: xpath)
また、Capybaraのfindを使うのであれば明示的な待機処理はいらないので、それも対処の1つだと思います。
一応、ヘッドレスでChromeのオプション設定して確認したので差分書いておきます。
- driver = Selenium::WebDriver.for :chrome
+ caps = Selenium::WebDriver::Remote::Capabilities.chrome(
+ chrome_options: {
+ args: %w[headless disable-gpu no-sandbox]
+ }
+ )
+ driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
試してみてください。
よろしくお願いします。
2018年3月4日日曜日 13時49分16秒 UTC+9 roswell: