Appiumを使って複数デバイスで実機テストする

More than 3 years have passed since last update.


はじめに


前提


  • Appiumが利用出来る環境が構築していること



  • adbコマンドが利用出来る


    • 上のリンクのチュートリアルどおりにやれば入ります




注意事項


  • 以下の場合はAppiumを使ったデバイスとの通信ができませんので、はまらないようにしてください


    • デバイスにロックがかかっている


      • => 解除してください



    • USBデバッグを無効にしている


      • => ケーブル接続時に常に許可しますかと聞かれるので、そこで有効にしてください

      • => メッセージが出なければ「設定」-> 「開発者向けオプション」からUSBデバッグを有効にしてください

      • ※ 「開発者向けオプション」が表示されていない場合、「設定」-> 「タブレット情報」->「ビルド番号」と書かれた領域を7回連続でタップして"これでデベロッパーになりました!"と表示されたら設定に表示されるようになります






やること


テストスクリプト作成


  • テストの中身については本記事では省略します


appium_test.rb

require 'rubygems'

require 'appium_lib'

capabilities = {
'appium-version' => '1.0',
'platformName' => 'Android',
'deviceName'=> 'Android',
'appPackage' => [パッケージ名],
'appActivity' => [アクティビティ名]
}
port = ARGV[0].to_i
appium_lib = { server_url: "http://127.0.0.1:#{port}/wd/hub" }

Appium::Driver.new(caps: capabilities, appium_lib: appium_lib).start_driver
Appium.promote_appium_methods Object

## TEST ##

driver_quit



実行スクリプト作成


start_appium_test.sh

pkill -f 'appium' #Appiumのプロセスを終了する

DEVICES=(`adb devices | grep -e "device$" | sed -e "s/device//"`) # 現在接続しているデバイスのUUIDリスト
PORT=4723 # Appiumのデフォルトポート
DEVICE_COUNT=`expr ${#DEVICES[@]} - 1` # デバイス数
for i in `seq 0 $DEVICE_COUNT`
do
# 接続しているデバイスの数だけAppiumを起動しておく
# appiumコマンドだけで実行するとデフォルトポートで起動されますが、複数台ケーブルを接続していても1台しか動きません
appium -p `expr $PORT + 2 \* $i` -bp `expr $PORT + 2 \* $i + 1` -U ${DEVICES[$i]} &
done

sleep 5 # Appiumが起動するまで少し待ちを入れておかないとまだ立ち上がってないよと怒られる

for i in `seq 0 $DEVICE_COUNT`
do
ruby appium_test.rb `expr $PORT + 2 \* $i` &
done




~ただの宣伝~


  • 全国のSeleniumer必読

  • Selenium, SauceLabs, Travis, Jenkinsに関するノウハウ書いているのでよかったら参考にしてみてください