こんにちは、ヒューマンクレストの中川です。
iOSが10にバージョンアップされたことにより、appiumでのテストの際、
xcuitest-driverが必要になりました。
selenium、appiumを使いiOS実機でのsafariのテストをするための設定手順について
記載いたします。
環境
・PC:Mac mini OSX El Capitan 10.11.6
・端末:iPhone6 plus 10.1.1
・java :1.8
・appium:1.6.0
・selenium :3.0.1
・java-client:4.1.2
・xcode:8.1
前提条件
・brewがinstallされていること
・nodeがinstallされていること
・apple developerで証明書が登録済みであること
手順
①appiumのsourceから実行する方法。
・iOS_webkit_debug_proxyのインストール
$ brew install ios-webkit-debug-proxy
・Appiumサイトの「Setting up Appium from Source」まで設定します。
下記URLを参考に設定を行いました。
https://github.com/appium/appium/blob/master/docs/en/contributing-to-appium/appium-from-source.md
・appiumをインストールしたいフォルダにてgit cloneする
$ git clone https://github.com/appium/appium.git
・appiumを開く
$ cd appium
・npmをインストール
$ npm install
・authorize-iosをインストール
$ npm install -g authorize-ios
②下記URLを参考に、Webdriver agentの設定をします
https://github.com/appium/appium-xcuitest-driver
・必要なパッケージのインストール
$ brew install ideviceinstaller
$ brew install carthage
$ npm install -g ios-deploy
$ npm install -g deviceconsole
$ gem install xcpretty
・web driver agentの設定
$ cd node_modules/appium-xcuitest-driver/WebDriverAgent
$ mkdir -p Resources/WebDriverAgent.bundle
$ sh ./Scripts/bootstrap.sh -d
・「webdriverAgent.xcodeproj」をxcodeで開き、Teamとsigning certificateを設定します。
・下記コマンドを実行し、xcodebuildします。
$ xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=<udid>' test
③Appium、webkit_debug_proxyを起動
$ node . -U <udid>
$ ios_webkit_debug_proxy -c <udid>:27753 -d
seleniumからappiumを介してiOS実機を実行します。(URLを開くだけですが・・・。)
public class sample1 { public static void main (String[]args) throws MalformedURLException{ DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("platformName","iOS"); capabilities.setCapability("platformVersion","10.1"); capabilities.setCapability("deviceName", "iPhone"); capabilities.setCapability("browserName","Safari"); capabilities.setCapability("udid","<udid>"); capabilities.setCapability("automationName","XCUITest"); WebDriver driver = new IOSDriver(new URL("https://127.0.0.1:4723/wd/hub"), capabilities); driver.get("https://www.humancrest.co.jp"); driver.quit(); } }
手順については、以上になります。
ポイントは、capabilityに”AutomationName”,”XCUITest”の設定が必要になりました。
また実行の際、エラーが出たところに関しては、補足に私が試したことを記載いたします。
補足
①ios_webkit_debug_proxyについて実行時、エラーが出ました。
解決策を下記に記載します。
・エラー文:
Could not connect to lockdownd
下記コマンドにて解決しました。
$ brew upgrade libimobiledevice --HEAD
②WebDriverAgentの設定
xcodeで「WebDriverAgent.xcodeproj」を設定する際、WebDriverAgentLibのみをSigningのTeam設定をしただけでは動作しなかったため、下記のTargetについても設定をしました。
・WebDriver AgentLib
・WebDriverAgentRunner
・UnitTest
・IntegrationTests
・IntegrationApp
まとめ
今回は、xcuitest-driverを用いたiOS10をappiumから実行する手順について
記載いたしました。
設定項目は、それほど多くはありませんが、「Appium Discuss」、「stack over flow」などから設定の手順、エラーの解決法を見つけることができず苦労しました。
苦労はしましたが、わからないものを自分で調べていく力はついたと思います。
現在、iOS10のブラウザテストを行っておりますが、seleniumのコマンド「URLを開く」「Sendkey」「Select」など正常に動作しております。
また、気になる点がありましたらご指摘いただけますと幸いです。