はじめに
- SauceLabsを利用してAndroidアプリのテストを動かそうとして、まずはテストを書いてみようと手元の環境Appium+Androidエミュレータ環境で試みました
- SauceLabs + AppiumでAndroidアプリのテストを走らせる
- ローカルにあるアプリをAppium + SauceLabsでテストする
- ところが動きがあまりにももっさりとしていたので実機で試してみたくなり・・・
- 実機でやってみるとサクサクでした
- せっかくなので、一度に複数の端末で同じことやらせたいなと思い、やってみたので記録します
前提
- 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に関するノウハウ書いているのでよかったら参考にしてみてください