appiumを用いたwebブラウザ自動テスト

QUES TECH

gori0i9a3099072103255_tp_v

こんにちは、ヒューマンクレストの中川です。
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("http://127.0.0.1:4723/wd/hub"), capabilities);
		driver.get("http://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」など正常に動作しております。
また、気になる点がありましたらご指摘いただけますと幸いです。