LoginSignup
3

More than 5 years have passed since last update.

この記事はselenium_and_appiumアドベントカレンダー2016の20日目の記事です。

parallel_5.gif

はじめに

TEISHISEIです!語弊を恐れず書きます!お手柔らかにー

上のgifは弊社のSTF環境で実行したAndroid端末のSelenium(Appium,Selendroid)並列実行です。
STFとはリモート(ブラウザ)でAndroidの実機操作を行うツールです。STFの方が気になる方はこちらへ。

Androidで動かしたい

Androidでブラウザテストがしたい場合、かなり複雑ですよね。

  • Android2.3以上ならSelendroid
  • Android4.2以上ならAppium
    • Chromeを使いたいならAndroid4.2以上
      • Chromeをインストールしている
      • Android Chromeのversionは43.0.2357.0以上
    • Browserを使いたいならAndroid4.4以上
      • Browserがインストールされているか(com.android.browserでないといけない。メーカー独自のBrowserだと動かない)

そしてdriverインスタンス作成時のconfigとかがそれ毎に違ってたりして複雑。調べるのも結構大変。

なので並列実行できるRuby用のSelenium(Appium,Selendroid)のラッパーを作りました。
実行できるブラウザとツールを判定して勝手にいろいろ設定してくれます。

インストール

すいません。まだちゃんとテストできてないので公開はしていません。
gitから落として手動でbuildする必要があります。

$ git clone https://github.com/arakawamoriyuki/android_webdriver.git
$ cd android_webdriver
$ gem build android_webdriver.gemspec

そしてGemfileにbuild後にでてきたgemを指定。

gem '/path/to/android_webdriver-x.x.x.gem'

使い方

古いAndroid2.3も実行できるようにselendroid-standalone.jarをダウンロードしてください。

実行できる環境にあるのか、下記で検証できます。

$ bundle exec android_webdriver doctor

シンプルにudidを指定して1端末実行

require 'android_webdriver'
udid = 'xxxxxxxxxxxxx' # udidを調べて設定してください
driver = AndroidWebDriver.for(udid)
driver.navigate.to 'https://www.google.co.jp'
driver.quit

オプションを指定して1端末実行

require 'android_webdriver'
udid = 'xxxxxxxxxxxxx' # udidを調べて設定してください
driver = AndroidWebDriver.for(udid, {

  ## 実行したいブラウザ名. (Chrome or Browser or Selendroid)
  # 指定がなければ自動で選択。
  browserName: 'Chrome'

  ## selendroid-standalone.jarのパスを指定
  # selendroid-standalone.jarをダウンロードしてください。デフォルトではfindコマンドを使って、下層ディレクトリから検索したパスを利用します。
  # `find . -name 'selendroid-standalone-*.*.*-with-dependencies.jar' -type f`
  selendroidPath: './selendroid-standalone-*.*.*-with-dependencies.jar'

  ## 各ポートを設定します。
  # デフォルトで空きポートを調べて設定してくれます。
  port: '4444'
  bootstrapPort: '4445'
  selendroidPort: '4446'
  chromedriverPort: '4447'

  ## ログの吐き出し
  logPath: "./log/#{Time.now.strftime('%Y%m%d%H%M%S')}.#{udid}.log"
})
driver.navigate.to 'https://www.google.co.jp'
driver.quit

複数端末を直列で実行

require 'android_webdriver'
udids = [udid,udid,udid...] # udidを調べて設定してください
AndroidWebDriver::MultiDevices.sequential(udids) do |driver|
  driver.navigate.to 'https://www.google.co.jp'
  driver.quit
end

複数端末を並列で実行

require 'android_webdriver'
udids = [udid,udid,udid...] # udidを調べて設定してください
AndroidWebDriver::MultiDevices.parallel(udids) do |driver|
  driver.navigate.to 'https://www.google.co.jp'
  driver.quit
end

さいごに

記事作成までに間に合わず、まだバグがあるはずです。。
unix系osだと動くはず(未検証)。

次の記事はtadashi0713さんです。
appiumについて書いてくれるとの事で期待してます!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3