appium
目的
WebViewのテストにcalabash iosを導入していたが、これがXcode9以降全く動かなくなったので 諦めて、appiumへ切り替え * calabash側に聞いたら、rubyのバージョン下げて、って言われて、下げたけど、改善しなかったので、 変わんないよ、って伝えて、諦めた。
使い所
iOSとAndroidアプリのUIテストに使えて、さらにモバイルwebのテストにも使用できるっぽい。 かなり応用が効くと思われる。 *情報を確認しただけで、ちゃんと調べてはいないが、実機でも動作するようです。 当初2017年に調べてたときより大分進化した印象。
インストール
こちらを参考 https://pepese.github.io/blog/appium-basics/
まずは
画面にどういった要素があって、どこをどう動かしたら、画面遷移するのかとかをチェックする必要がある。 そのために、インスペクタを使う。
inspector
viewの要素がなんなのか、チェックするのに使用。 まずは、どういった要素があるかわからないと、UIテストが作れないため。 こちらを参考に https://qiita.com/Real_analysis/items/4fe0e887833a260eb9b9 https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
DesiredCapabilities
どのアプリをinspectorでチェックするかに使用する。 実際テストコードを書く際にも以下を使用する。
{ "platformName": "iOS", "platformVersion": "11.4", "deviceName": "iPhone 7", "automationName": "XCUITest", "app": "アプリのパス" }
こんな感じ。各アプリ、テストしたい端末に応じて、値を調節してやればいい。
Test
sample-codeを参考に動かせば良さげ https://qiita.com/tabbyz/items/187ef263b6ac3ba7b3bd
どの言語でテストコード書く?
phpunit採用。自分が一番慣れてるので。 javaでも良かったかなと思ってる。appiu-phpがあまり活発じゃないので。
注意点
phpunit-seleniumとappiumのPGが合わないところがある。 composer.jsonはこれを使うとよい
➜ cat composer.json { "name": "ios_unittest_appium", "repositories": [ { "type": "vcs", "url": "https://github.com/appium/php-client" } ], "require": { "appium/php-client": "dev-master" }, "require-dev": { "phpunit/phpunit-selenium": "dev-master#6cd8b2acadd13d3f16b0e8cc41f8bbf50f4d1dec" } }
サンプルで実行したコマンド
社内テストアプリで応募までを動かそうとトライしている。多分できそう。
ios_unittest_appium on master [!] via 🐘 v7.2.9 ➜ vendor/phpunit/phpunit/phpunit test/basic/appium_test.php
アプリを引数で渡す。
アプリのパスは作成者によって違うので、開発時は、コマンドライン引数で渡すようにしたほうが良い(と思う)。 PGを変更して、以下で実行できるようにした。
vendor/phpunit/phpunit/phpunit test/basic/appium_test.php app="アプリのパス" device="iPhone 7" version="11.4"
app,device,versionパラメータがないと、動かないようになってるので、注意。順番は変えても動くはずです。
webviewを操作していて、現在のURLを取得したい場合
社内環境か、どうか確認してから応募しないと、事故になるため。
$aryContext = $this->contexts(); // 2番目のindexがwebのコンテキストになってる $this->context($aryContext[1]); echo "WEBURL:".$this->url()."\n";
array(2) { [0]=> string(10) "NATIVE_APP" [1]=> string(15) "WEBVIEW_79437.1" }
注意点として、終わったあと、NATIVE_APPに戻さないと、以降の操作ができなくなる。