Android と iOS は appium を使用してテストを自動化します

環境構築参考:python+Appium+xcode+android Studio自動テスト環境構築_Android Studioインストール python_Vermouth_00のブログ - CSDNブログ

アンドロイド

1. デバイスを接続します

Android デバイスをデータ ケーブルでコンピュータに接続し、USB デバッグ スイッチをオンにして認証し、adb devices コマンドを使用してデバイスが正常に接続されていることを確認します。

2、appium サービスを開始する

appium のデスクトップ版の場合:

「サーバーの開始」をクリックして開始します。

コマンドラインバージョンのappium:

nohup appium -p 4725 -U 4b72ec30 --session-override --allow-insecure=adb_shell > appium_a32a6a4e.log &

nohup はバックグラウンドで実行されます。 - U の後にデバイスのシリアル番号が続きます。これは adb devices コマンドで表示できます。

3. Appium がデバイスに接続します

desired_caps = {
            'platformName': 'Android',
            'platformVersion': '11',
            'deviceName': '4b72ec30 ',#不会进行校验,但是没有会报错
            'appActivity': 'com.autonavi.map.activity.NewMapActivity',#app的启动页面
            'appPackage': 'com.autonavi.minimap'
        }
self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

iOS

1. データケーブルを使用して電話機をコンピュータに接続します。

コンピュータを信頼するためのパスワードを入力してください

2、appium サービスを開始する

appium のデスクトップ版の場合:

「サーバーの開始」をクリックして開始します。

コマンドラインバージョンのappium:

"start /b appium --session-override -a " + アドレス + " -p " + Appium_port+" --webdriveragent-port "+webdriveragent_port

webdriveragent_port: iOS クライアントと対話する webdriveragent のポート番号、デフォルトは 8010

3. Xcode がコンパイルされ、wda が実行されます

(1) [WebDriverAgentLib]、[WebDriverAgentRunner]、[IntegrationApp]のチームを設定し、ログインしているApple IDを選択し、そのApple IDにログインします: (左上のXcode - 「Preference」の下をクリックして追加または削除します)

(2) [WebDriverAgentRunner]、[IntegrationApp]にBuild SettingsのPackagingディレクトリにあるProduct Bundle IdentifierのIDを設定します。Facebookを変更するだけで、任意に変更できます。

  (3) 【プロダクト】→【スキーム】を設定し、【WebDriverAgentRunner】を選択

 (4) 接続しているデバイスを選択し、command + uを実行します。

 (5) 初回実行時には、実デバイスの設定 [設定] → [一般] → [説明ファイルとデバイスの管理] で証明書の信頼を設定する必要があります。開発者 APP の下にインストールしたばかりの WebDriverAgent を信頼するように選択すると、command+u で正常に実行できます。 

(6) コンソールに次の情報が表示されます。

 

一部の iPhone では、携帯電話の IP とポート番号を介してアクセスできません。このとき、携帯電話のポートを Mac に転送する必要があり、端末は次のコマンドを実行します。

iproxy 8100 8100

携帯電話の 8100 ポートをコンピュータの 8100 ポートにマッピングします。このようにして、コンピュータのポート 8100 にアクセスすることで携帯電話にアクセスできます。

インターネットで、「継続的統合の場合」、次の方法を使用してコード内で wda を開始するとわかりました。xcode で開始する必要はありません。

desiredCapabilities.setCapability("useNewWDA", true);

コマンド ラインでエージェントを実行した後、iproxy 8100 8100ブラウザで http://127.0.0.1:8100/statusを開いて 、iOS デバイスが正常に接続できるかどうかを確認できます。

4. Appium がデバイスに接続します

パラメータ設定

desired_capabilities = {
  "platformName": "ios",
  "deviceName": "iPhone7P",
  "platformVersion": "13.6.1",
  "bundleId": "com.meituan.imeituan-beta",
  "udid": "e372ee5092535ad955329aac04c450fb78b96abd"
}

iOS 電話の udid を取得します。ファインダーで接続されたデバイスをクリックします。デフォルトの表示はメモリと電源です。ここをもう一度クリックしてシリアル番号の udid に切り替え、右クリックして udid をコピーします。

 

ipaのバンドルIDを取得すると、tidviceが使えるようになります

 tidevice applist

 desired_caps = {
              "platformName": "ios",
              "deviceName": "iPhone7P",
              "platformVersion": "13.6.1",
              "bundleId": "com.meituan.imeituan-beta",
              "udid": "e372ee5092535ad955329aac04c450fb78b96abd",
              "clearSystemFiles": "true"
            }

        self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

以前は問題なく動作していましたが、今日問題が発生しました。

コマンドの処理中に不明なサーバー側エラーが発生しました。元のエラー: platformName 'ios' のドライバーをロードできませんでした。Appium のインストールを確認してください

appium をアンインストールして再インストールすると解決しました。

高度:

Android+appium マルチマシン オートメーション リファレンス: Android+python+appium マルチマシン オートメーション_Vermouth_00 のブログ-CSDN ブログ

おすすめ

転載: blog.csdn.net/Vermouth_00/article/details/131171579