これまでiPhoneの自動テストをMac上でAppiumを使って実行してきましたが、自動化環境を増やす度にMacを調達するのはコスト的に厳しいという事情がありました。
そこで、ラズパイのような安価で比較的調達しやすい(昨今は入手が厳しくはありますが)環境でiPhoneの自動化を実施したいと思うようになりました。
今回ようやくラズパイ4でiPhoneの自動テストが動いたので、簡単に紹介します。
まずは簡単なデモ動画となります。
スポンサーリンク
環境
・RaspberryPi4
Linux raspberrypi 5.15.74-v8+ #1595 SMP PREEMPT Wed Oct 26 11:07:24 BST 2022 aarch64 GNU/Linux
・iPhone SE第3世代 iOS15.7
手順としては以下のGitHubページを大いに活用しました。
https://github.com/danielpaulus/ios-appium-on-linux
ほぼ手順に沿ってセットアップすればそのままで動くのですが、go-iosというLinuxとiPhone間を取り持つサーバのバイナリがデフォルトではx86_64用でラズパイでは動作しないので、arm64用にビルドし直しました。
また、iPhone側にはWebDriverAgentと呼ばれるツールを導入する必要がありました。
ツールがインストールされるとiPhone側に「Automation Running」と表示されます。
このツール導入時だけはMacが必要となります。
https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md
インストールの様子を動画にしたので良かったら参考にしてください。
WebDriverAgentインストール手順【動画付き】
ソースコード
Pythonのpytestを使いました。
デモではiPhoneアプリを起動するだけで判定処理は入っていないです。
import pytest
from appium import webdriver
import time
class Test:
@pytest.fixture(autouse=True)
def setup(self):
desired_caps = {
'deviceName': 'iPhone',
'automationName': 'XCUITest',
'platformName': 'iOS',
'udid': 'auto',
'webDriverAgentUrl': 'http://localhost:7777'
}
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
yield
self.driver.terminate_app('com.apple.stocks')
def test_sample(self):
self.driver.activate_app('com.apple.weather')
time.sleep(5)
self.driver.activate_app('com.apple.stocks')
time.sleep(5)