ダメ!絶対。
[.。oO(さっちゃん Advent Calendar) http://atnd.org/events/22829 ]9日目
2日休んでしまった…orz
明日はOpera忘年会です。
Opera 11.6が出ましたね。関係有りませんが。
What's OperaDriver?
[Selenium http://seleniumhq.org/ ]と[Watir http://watir.com/ ]と云うツールが有ります。これらはWebのテスティングツールで、喩えばPadrinoでWebサービスを作ったとして、ですね。ユーザがwebブラウザでこういう動作をしたら、サーバは期待した値を返すか、ブラウザでも動作で、JavaScriptは期待した動作をするか、等をテストしたいわけです。また、webブラウザを作っている人でしたら、ブラウザがあちこちのwebサイトでちゃんと動くかテストしたいわけです、楽に。
[Opera Driver http://www.opera.com/developer/tools/operadriver/ ]は、そんなSelenium/WebDriverのOpera版です。Opera DriverはSeleniumに同梱されているそうです。テストし放題ですね!
OperaWatirというのは、Javaで動くOperaDriverを、JRubyから操作できるようにしたラッパーです。RSpecし放題ですね>ω<!
まぁそんな事に今回興味はありませんが。。
ちぢめて言えば、OperaDriverは、Operaを外から操作でき、OperaWatirは、その操作をRubyで書けるんです。Operaの操作は、Opera Dragonflyが使っているのと同じ、ScopeプロトコルでOperaやOperaMobileと通信しているそうです。
OperaWatirの準備
Windowsでしたら、Rubyはきっと[pik http://rubyinstaller.org/add-ons/pik/ ]で管理していますね。pikはJRuby 1.5.6以上にしか対応していないので、手動でインストールして、pikに組み込まなければなりません。OperaWatirをJRuby1.6で使うとOperaDriver側のエラー続出でまともに動きませんでした。1.5.5にした途端動く様になって発狂しそうになりました。
JRuby 1.5.5を[ http://jruby.org/files/downloads/1.5.5/index.html ]からダウンロードしましょう。それをpikのrubiesにインストールします。Windows7ならC:\Users\yourusername\.pik\rubies\jruby-1.5.5
だと思います。
pikの設定ファイルに追記します。.pikのconfig.yamlに
"155: jruby 1.5.5 (ruby-1.8-7-p249) (2010-11-10 4bd4200) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_26) [Windows 7-amd64-java]": :path: !ruby/object:Pathname path: C:/Users/yourusername/.pik/rubies/jruby-1.5.5/bin
等と適当な事を追記しましょう。此れでJRuby 1.5.5のインストールは終わりです。
pik use jruby 1.5.5
で、jrubyコマンドが使えます。
OperaWatirのインストールは直ぐです。
jruby -S gem install operawatir
です。OperaDriverは同梱されていて、一緒にインストールされます。
OperaWatirの実行手順
RSpecしないでいいなら
require 'rubygems' require 'operawatir'
して、
jruby *.rb
でいいそうですが、Operaのエラーが出て動きません。知りません。
operawatir
コマンドがインストールれているので、それを使いましょう。
require 'rubygems' require 'operawatir' browser = OperaWatir::Browser.new browser.goto 'http://c4se.tk'
これを適当なファイルに保存して。opera.rb
にしましょうか。Operaを立ち上げておいて、
operawatir -m opera.rb
を実行します。Operaでopera:debug
を開いて、コンソール側にReady to accept connections on port 7001
の記述が出力されたら、Connect
をクリックします。
サイトが開きましたね!
ついったーbot
以下のコードをoperawatir -mで実行しましょう。
require 'rubygems' require 'operawatir' messages = ['.。oO(OperaWatirヾ(〃l _ l)ノ゙)', '.。oO(人生は30000日しかない)', '.。oO(Opera使え)', '.。oO(生姜ももんがはいかが?)', '.。oO(またサソリました)', '.。oO(虫たちの弟子です)', '.。oO(おぺらわふー>ω<)', '.。oO(, - ,---- (U( ) | |∨T∨ (__)_))', '.。oO(もふり✖╹◡╹✖)', '.。oO(( ╹ヮ╹)ノ)', '.。oO(踊り狂って死ぬ)', '.。oO(12人のももんが(〃l ω l))'] messages.shuffle! browser = OperaWatir::Browser.new browser.goto 'http://favstar.fm/me' messages.each do |message| browser.link(:class, 'newTweet').click sleep 1 script = <<"SCRIPT" document.querySelector('.tweet_text').innerHTML = '#{message}'; send_tweet(); hide_tweet_dialog(); SCRIPT browser.execute_script script sleep 30 end
sleep 30
でエラーですね! はぁ……