09 May 2014, 22:39

Selenium BuilderでRubyコードを自動生成して実行する

次世代Selenium IDEと唱われている、Selenium Builderを試したメモ。

次世代Selenium IDE

次世代という意味は、Selenium2 、 つまりWebdriverをサポートしているということ。

Selenium IDEは Selenium1(or RemoteConsole RC)をサポートしている。

Selenium Builderの準備

<div class="outline-text-3" id="text-1-1">
  <p>
    Selenium Builderは forefoxのブラグイン。 なので、まずはfirefoxをインストール。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://www.mozilla.org/ja/firefox/new/">Firefox のダウンロード — 自由な Web ブラウザ — Mozilla</a>
    </li>
  </ul>

  <p>
    次に、以下からプラグインをインストール。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://sebuilder.github.io/se-builder/">Selenium Builder &#8211; The next evolution</a>
    </li>
  </ul>

  <p>
    firefoxを再起動後、Ctrl+Alt+B or メニュー -> 開発ツール -> Launch Senium Builder.
  </p>

  <p>
    Selenium Builderについては、以下の記事がとても詳しい。Special Thanks!!
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://blog.trident-qa.com/2013/12/selenium-builder-vs-ide-recap/">次世代のIDE、Selenium Builderまとめ | 品質向上ブログ</a>
    </li>
  </ul>

  <p>
    まとまったドキュメントはここ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://github.com/sebuilder/se-builder/wiki">Pages · sebuilder/se-builder Wiki</a>
    </li>
  </ul>
</div></p>

ruby selenium webdriverの準備

<div class="outline-text-3" id="text-1-2">
  <p>
    rubyから seleniumを利用するために、selenium-webdriverを利用する。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">gem install selenium-webdriver

  <p>
    プロキシ配下では以下。
  </p>

  <div class="org-src-container">
    <pre class="src src-sh">gem install selenium-webdriver -r -p http://username:password@proxy.hostname:port

<div id="outline-container-sec-1-2-1" class="outline-4">
  <h4 id="sec-1-2-1">
    Windows環境のワナ
  </h4>

  <div class="outline-text-4" id="text-1-2-1">
    <p>
      Windows環境でgem installを動かすためには、devkitのインストールが必要。 RubyInstallerと Devkitをセットでインストールする必要がある。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://rubyinstaller.org/">RubyInstaller for Windows</a>
      </li>
    </ul>
  </div></p>
</div>

<div id="outline-container-sec-1-2-2" class="outline-4">
  <h4 id="sec-1-2-2">
    Cygwin環境のワナ
  </h4>

  <div class="outline-text-4" id="text-1-2-2">
    <p>
      そもそも、Cygwin環境では 依存パッケージのffiがバグっててインストールできない。
    </p>

    <p>
      Cygwin64bit版は依存しているffiライブラリがバグってる! パッチを当てる必要があるという茨の道。
    </p>

    <ul class="org-ul">
      <li>
        <a href="https://github.com/ffi/ffi/issues/284">https://github.com/ffi/ffi/issues/284</a>
      </li>
    </ul>

    <div class="org-src-container">
      <pre class="src src-sh">$ gem install selenium-webdriver

Building native extensions. This could take a while… ERROR: Error installing selenium-webdriver: ERROR: Failed to build gem native extension.

    /usr/bin/ruby.exe extconf.rb

checking for ffi.h… *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more

    <p>
      回避方法をためしてみても、自分の環境ではうまくいかなかったので諦め。
    </p></p>
  </div></p>
</div></p>

Rubyコードを生成

自動化したいページで右クリックする。

SeleniumBuilderが立ち上がる。記録の開始を選択して、作業を記録。

記録が終わったら、ツールバー -> ファイル -> エクスポートを選択。

Selenium2としては以下の形式へExportできる(2014/5現在)

  • JSON
  • Java(Junit/TestNG)
  • Ruby
  • Python
  • PHP
  • Node.JS
  • C#

Selenium1としてExportするとさらに対応言語が多くなる。

  • HTML
  • Groovry
  • Perl

Selenium1だと、RubyのRSpecやtextunitにも対応しているようだ。 もっともっと多くなるのは時間の問題だろう。スゴい!

Rubyを選択して、Rubyのコードを生成。

require 'rubygems'
require 'selenium-webdriver'
wd = Selenium::WebDriver.for :firefox

wd.get "https://www.google.co.jp/"
wd.find_element(:id, "lst-ib").click
wd.find_element(:id, "lst-ib").clear
wd.find_element(:id, "lst-ib").send_keys "Selenium Builder"
wd.find_element(:css, "div.tsf-p").click
wd.find_element(:name, "btnK").click
wd.quit

<p>
  selenium-webdriverがrequireされいてるところに注目されたし。
</p></p>

Rubyコードを実行

生成したコードをコマンドラインから実行するだけ!こんなに簡単だとは!