人気記事

Appium CI/CD iPhone Python RaspberryPi

ラズパイからAppiumとPythonを使ったiPhone自動テスト

更新日:

これまで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)   

-Appium, CI/CD, iPhone, Python, RaspberryPi
-, , ,

Copyright© ITエンジニアへの転身 , 2022 All Rights Reserved Powered by STINGER.