F.Ko-Jiの「一秒後は未来」

AppiumとSelenium WebDriverを使ってiOSシミュレータ上のSafariで自動テストしてみた

appium-simulator-01.png

Selenium WebDriver を使って iPad 用 Safari の自動テストができないかと思い Appium という iOS/Android アプリのテストを自動化するツールを試してみた。ただ色々と罠が多くてハマる。

なお、開発環境は Mac の VirtualBox 上に構築しており、RSpec で Selenium WebDriver を使用。Mac 側の Appium に接続し iOS シミュレータ上の Safari でテストするという形式。

まず、Appium は GUI で操作できるアプリ形式のパッケージも提供されているが、結局 Node.js が必要になるので公式サイトのガイド通り node の npm で入れた。

$ brew install node
$ npm install -g appium
$ npm install wd
$ appium

これで appium がローカルホストの 4723 番ポートで待ち受ける状態になる。

なお Mac OS X で Appium を使う場合、「appium/docs/en/running-on-osx.md at master · appium/appium」にあるように appium コマンドを実行する前に、

$ sudo authorize_ios

を実行しておく必要がある。Appium をパッケージで入れた場合は別途ダイアログが出るので必要なし。

あとは以下のようなコードを書けば Selenium WebDriver で iOS シミュレータを起動できる。

url = 'http://127.0.0.1:4723/wd/hub'
caps = {
  'platformName'      => 'iOS',
  'deviceName'        => 'iPad Simulator',
  'platformVersion'   => '7.1',
  'browserName'       => 'safari',
}
ipad_driver = Selenium::WebDriver.for :remote, :url => url, :desired_capabilities => caps

desired_capabilities に指定できるオプションは以下を参照。

» appium/docs/en/caps.md at master · appium/appium

これでひとまず正常にテストを実行できた。

ちなみにパッケージでインストールした Node.js は使用できない。appium を起動する際にパーミッション周りでエラーになり、sudo で実行しようとすると sudo 使うなと怒られ、 Homebrew 等で node をインストールし直しなさいと言われる。

また、どういった条件かは分からないが頻繁に「App をインストールできませんでした。」というダイアログが出て MobileSafari が起動しなくなることがあった。起動しないばかりかシミュレータ上から MobileSafari が消えてしまう。

appium-simulator-02.png

Xcode をインストールし直しても元に戻らず、調べまくった結果以下のディレクトリの中身を一旦削除してから Appium を起動し直せば OK ということが分かった。

~/Library/Application Support/iPhone Simulator/[device_version]/Applications

» iOS 7 Simulator Msg: iOS Simulator Failed To Install The Application – Google グループ

それから「[iOS] Appiumを試したメモ – 起動させるまでの道のり – Qiita」にあるように「–no-reset」オプションをつけずに appium を実行すると、テスト終了時にシミュレータ上のアプリケーションを削除してしまうらしい。個人的には関係なかったが。

ちなみに Appium 以外に「ios-driver」という選択肢もある。こっちもハマっててまだうまく実行できていない。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など