Seleniumでブラウザを操作していると、クリックではなくマウスオーバーをしたい時があります。今回は、SeleniumとRubyでマウスオーバーをする方法を書きます。

ドライバ操作

SeleniumとRubyでマウスオーバーをするコードは以下のとおりです。

driver.action.move_to(driver.find_element(css: 'element')).perform

実際にブラウザを立ち上げたコードを書いてみます。以下のコードでは、https://google.comにアクセスして、音声のアイコンに対しマウスオーバーをします。

require 'selenium-webdriver'

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')

driver = Selenium::WebDriver.for :chrome
driver.get('https://google.com')
sleep 1

driver.action.move_to(driver.find_element(css: '.hb2Smf')).perform
driver.save_screenshot('/tmp/test.png')

driver.quit

tmpディレクトリ内に以下のスクショが取れていれば成功です。「音声で検索」という表示が出ていると思います。
selenium-ruby-mouseover

参考

http://How to hover over (mouseover) an element in Selenium Ruby?