ruby+selenium+chromeでgmail送信

Pocket

rubyのselenium-webdriverでgmailの操作を試みた結果、なんとか動くものができたのでメモしておきます。

同様のことをC#でやっている事例はあったのですが、rubyのCSSセレクタが思うように動きませんでした。結局、CSSではなくIDを指定してボタンの操作をしました。

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :chrome
driver.get "https://mail.google.com/a/?view=cm&tf=1&to=nokubi@gmail.com&su=test&body=test"
sleep 10

#動かない。空白がまじっているから?
#elem = driver.find_element(:class, "T-I J-J5-Ji aoO T-I-atl L3") 

#C#のCSSセレクタ書式をそのまま入れてみたがだめ
#elem = driver.find_element(:css, "div[class='T-I J-J5-Ji Bq nS T-I-KE L3']>b") 

# div.class 形式がrubyでの書き方らしいのだけどこれもだめ
#elem = driver.find_element(:css, "div.T-I J-J5-Ji Bq nS T-I-KE L3'.b") 

# IDなら動いた
elem = driver.find_element(:id, ":pb") 
elem.click

URLはこんな感じの組み合わせでメールの内容を指定できます。

  • https://mail.google.com/a/?view=cm&tf=1& (定型?)
  • to=nokubi@gmail.com& (toに送信先アドレスを指定)
  • su=test& (suにサブジェクト)
  • body=test (bodyに本文)

これは”Mailto: for GMail“の拡張を参考にしました。