AppiumでiPhone実機のMobileSafariをSelenium WebDriverで操作するまで
ios_webkit_debug_proxyだけで動かしてみた
インストール
今回はbrewからインストールした。
$ brew install ios_webkit_debug_proxy
動作確認
- 引数なしで起動すると今接続されているデバイスが自動で選択され
localhost:9221
で起動する。 - デバイス上でMobileSafariで適当なページを表示させる。
- Chromeで
localhost:9221
へ接続すると、接続しているデバイス、表示しているURLとリンクを辿れる。URLをクリックするとWebインスペクタが表示され、コンテンツをリモートで確認することができる。
Appiumを介してSelenium WebDriverでデバイスを操作する
Appiumのインストール
今回はbrewとnpmでインストールした。
$ brew install npm $ npm install -g appium
もろもろインストールされる。
SafariLauncherをビルドしてappium-ios-driverがデバイスにインストールできるようにする
※ 本来はappium-ios-driverがSafariLauncherも自動的にビルドするようだがうまくいかなかったので先にSafariLauncherをビルドする。
- provisioning profileを作る。http://appium.io/slate/en/master/?ruby#setup67
- SafariLauncherを作ったプロファイルで動かしたいiOSバージョン向けにビルドする。
xcodebuild -sdk iphoneos9.2
- /usr/local/lib/node_modules/appium/node_modules/appium-ios-driver/build/SafariLauncherへSafariLauncher.appを配置する。
動作確認
- ios_webkit_debug_proxyがインストールされており正常に動作していること。
- Appiumをインストールする。
- Appiumをデバイスを使うように指定して起動する。
appium --default-capabilities '{"app": "Safari", "deviceName": "iPhone", "udid": "${デバイスID}"}'
- Appiumが
localhost:4723
で起動しているので、Selenium WebDriverのRemoteドライバで接続する。 - Appiumが色々動いて、デバイス上でSafariLauncherが自動で起動し、Safariが自動で起動する。
こんなコードで操作できるようになる。
from selenium import webdriver desired_capabilities = { 'app': 'Safari', 'platformName': 'iOS', 'platformVersion': '9.2.1', 'deviceName': 'iPhone', } driver = webdriver.Remote( command_executor='http://127.0.0.1:4723/wd/hub', desired_capabilities=desired_capabilities) driver.get('http://yarch.jp')