Appiumでサンプルコードのテストを動かしてみる(iOS)(python)


# 背景
Appiumでサンプルアプリのテストを動かしてみようとしたところ、たくさんつまづいたので自分用にメモする

# 環境
OS: MacOSX10.11.3

*後で追記する

# インストール

## node.jsのインストール

node.jsがインストールされてるか確認
 
```
node -v
```
 

インストールされていたら削除
 
```
brew uninstall node
```

関連ファイルも削除
 
```
curl -ks https://gist.github.com/nicerobot/2697848/raw/uninstall-node.sh | bash
```
 
改めてインストール
 
```
brew install node
```

## Appiumインストール
Appiumがインストールされてるか確認

```
appium -v
```
インストールされてたら削除

```
npm uninstall -g appium
```

あらためてインストール

```
npm install -g appium
```

## appium-doctorインストール
実行環境のチェックを行うappium-doctorをインストール

```
npm install -g appium-doctor
```

実行環境チェック

```
appium-doctor --ios

info AppiumDoctor ### Diagnostic starting ###
info AppiumDoctor  ✔ Xcode is installed at: /Applications/Xcode.app/Contents/Developer
info AppiumDoctor  ✔ Xcode Command Line Tools are installed.
info AppiumDoctor  ✔ DevToolsSecurity is enabled.
info AppiumDoctor  ✔ The Authorization DB is set up properly.
info AppiumDoctor  ✔ The Node.js binary was found at: /usr/local/bin/node
info AppiumDoctor  ✔ HOME is set to: /Users/ak
info AppiumDoctor ### Diagnostic completed, no fix needed. ###
info AppiumDoctor
info AppiumDoctor Everything looks good, bye!
info AppiumDoctor
```

エラーがなくなればOK

# サンプルコードの準備
## サンプルサンプルコードのダウンロード
githubからダウンロード

```
git clone git@github.com:appium/sample-code.git
```

githubのアカウントがない/githubの設定してない人は[GitHub](https://github.com/appium/sample-code)からzipでダウンロードしてもいい

## pythonライブラリのインストール

python, pipがインストールされていること前提

```
pip install Appium-Python-Client
pip install pytest
```

# テストの実行
## xcodeのプロジェクトをBuild

さっきダウンロードしたAppiumのサンプルコードのあるディレクトリへ移動

```
cd appium/sample-code/sample-code/apps/TestApp
```

iOSアプリをビルド

```
xcodebuild -sdk iphonesimulator
```

## Appiumの実行

Appiumを起動する

```
appium &
```

こんなのが出れば成功

```
[Appium] Welcome to Appium v1.5.0 (REV 4b30df263ea85c61ec585b9859a3ba7b9b17e91f)
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
```

エラーが出た場合が一回タスクをkillして再実行してみる

```
killall 9 node
appium &
```

サンプルファイルの実行

```
py.test ios_simple.py
```

するとこんなエラーがでる

```
E       WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not find a device to launch. You requested 'iPhone 6 (8.3)', but the available devices were: ["iPad 2 (9.2) [39F3D654-5731-4F4C-8B36-6B5AC36BCA05]","iPad Air (9.2) [8020023A-7EB5-4283-B7CF-873B596C3E7B]","iPad Air 2 (9.2) [367FBF93-2D00-464C-9D07-DA6F4AB46049]","iPad Pro (9.2) [4440FBD6-F762-4ECE-8997-FB00FEBFD162]","iPad Retina (9.2) [862366B4-827F-4640-907F-16CCE1CCE2F7]","iPhone 4s (9.2) [C36E98A6-7D89-4A4E-BDF9-0279510FD217]","iPhone 5 (9.2) [755799DD-2C40-4707-BFF2-FDCA3E11793B]","iPhone 5s (9.2) [A9FF9113-1E85-4E2D-A67E-FC3579EF643A]","iPhone 6 (9.2) [5159B8AF-71CF-4704-9F84-59D664F12E46]","iPhone 6 Plus (9.2) [4757CA4E-32B6-46F9-AA5B-618A3F948A4C]","iPhone 6s (9.2) [1BD33BFF-D8E5-4EF1-9111-EE0BEEFDF3A7]","iPhone 6s (9.2) + Apple Watch - 38mm (2.1) [9EC546D4-C336-4B7A-8B03-FEA6275F1AC2]","iPhone 6s Plus (9.2) [300A8D59-359A-430C-A28D-707725320229]","iPhone 6s Plus (9.2) + Apple Watch - 42mm (2.1) [F7FF6A2E-C79B-4AB8-AA4B-3A5B630C888F]"]
```

サンプルアプリのiOSの対象バージョンが古いでios_simple.pyを修正する

```
 12     def setUp(self):↲
 13         # set up appium↲
 14         app = os.path.join(os.path.dirname(__file__),↲
 15                            '../../apps/TestApp/build/release-iphonesimulator',↲
 16                            'TestApp.app')↲
 17         app = os.path.abspath(app)↲
 18         self.driver = webdriver.Remote(↲
 19             command_executor='http://127.0.0.1:4723/wd/hub',↲
 20             desired_capabilities={↲
 21                 'app': app,↲
 22                 'platformName': 'iOS',↲
 23                 'platformVersion': '8.3',  //←ここを'9.2'にする↲
 24                 'deviceName': 'iPhone 6'↲
 25             })↲
```

気を取り直して実行

```
py.test ios_simple.py
```


動いた！やったね！

と言いたいところだけど、Locator Strategyの記述が変って言われてしまう...

```
InvalidSelectorException: Message: Locator Strategy 'name' is not supported for this session
```


参考

http://qiita.com/tabbyz/items/4386f37434c39b6b8095
http://qiita.com/tabbyz/items/36629fe2a3c82e3e4933