Appium + Python 自動化 (8) - 最初に Pipa の女性 Appium に会いました - 次 (超詳細)

はじめに

  前回の記事での推薦により、皆さんもこの美しさについて深く理解され、その卓越した技術と優雅な姿はずっと頭の中にあったのではないでしょうか?? ? 恥ずかしがらずに、「はい、その通りです」と直接伝えてください。この効果は私が望むものです。この効果が得られれば、十分に学習し、教師になれることを意味します。今日も引き続きこの琵琶美人を紹介していきます。

説明: アピウム - 奴隷家族のチューバ、奴隷家族のチューバについて言及しているのは、世界中の誰もが知っており、誰もがそれを知っています。サーヴァント == アピウム;

1.インターフェースの理解(Nujiaの外観)

  以前 appium をインストールしたときに、インストールには 2 つの方法があると言いましたが、結果は 2 つあり、1 つはインターフェイスあり (クライアント インストール)、もう 1 つはインターフェイスなし (ターミナル インストール) です。インターフェースがあって、インターフェースとは何なのか。

  「まず、ぴぱ娘の見た目を見てください。あなたのものが Windows の場合、インターフェイスは次のようになります。あなたのものと私のぴぱ娘が違っても心配しないでください。違いはあります。」と表示されますが、通常の Windowsこのバージョンではインターフェイス全体でボタンが 7 つだけあり、左から右、上から下の順に説明されています。

(Mac にはいくつかの違いがありますが、それほど大きな違いはありません。レイアウトとスタイルの問題だけですが、機能は同じです。)

1) Android 設定: 左側の最初のボタンは主に Android の関連設定を構成するためのもので、その構造図については次の図を見てみましょう。

a.アプリケーション パス:パスを選択し、テストするアプリがコンピューター上に保存されているパスを選択します。appium が起動すると、デフォルトでパスに移動してアプリを見つけ、指定された携帯電話にインストールします。

b.パッケージ:前述したように、これを通じてパッケージの ID カードを見つける必要がありますが、そうでない場合、インストール後にこれらのパッケージをどのように識別できるでしょうか?

c. Launch Activity : 名前が示すように、開始するアクティビティは、アクティビティで説明されているように、アプリの起動時に実行する必要があるアクティビティです。ここでは、最初の起動ページでアクティビティを入力します。

備考: ここで注意すべき問題があります。Choose で apk を選択するたびに、appium は自動的にパッケージに再署名し、パッケージ名とアクティビティ名がパッケージとアクティビティに自動的にリストされますが、ここで問題が発生します。APK を選択するたびに、リストにキャッシュの理由が表示されます。APK を変更しても、パッケージは同じままなので、起動時に常にエラーが報告されます。心配しないでください。このような状況に遭遇した場合は、2 回再起動してください。

d.アクティビティを待つ: 上記と同様で、アクティビティが開くのを待つことを意味しますが、理解するのにそれほど時間はかかりません。

e. Launch Device:ラベルの下にあるものは比較的めったに使用されないため、後で見つけることができます。

f.機能:このラベルは自動化と多くの関係があり、後で自動化を行うときに、アプリやその他の情報を開始するためにこのラベルの下のデータを構成する方法が決まります。         

g.プラットフォーム名:テストしているアプリの種類。iOS の場合は ios、Android の場合は Android を選択します。

h.オートメーション名:テスト エンジンの名前。appium を使用しているため、一見すると Appium であることがわかりますが、Selendroid も持っています。ここで疑問に思うかもしれませんが、なぜ appium は 2 つのシステムを選択する必要があるのでしょうか? 実は、これは Android のバージョンの問題に遡る必要があります。Android 独自のツールはバージョン 4.2 より前に 1 つありましたが、その後更新されました。appium も 2 つのセットを使用するのはこのためかもしれません。インストールされたアプリをテストするときマシンのバージョンが 4.0 以前の場合は、ここでエンジンとして Selendroid を選択する必要があります。その場合は、自分で試すことができます。真実を試す唯一の方法は、自分で試してみることです。

i.プラットフォームのバージョン:アプリケーションがインストールされている携帯電話のバージョン番号、および Android のバージョン。

j.デバイス名:デバイス名。

注: ここで問題が発生します。Android をテストするときに 1 台の携帯電話のみをコンピューターに接続する場合は、入力したデバイス名が間違っていても、正常にインストールして使用できます。しかし、iosは動作しません。設計時にこれが考慮されたかどうかはわかりませんが、今後使用する際に同様の問題が発生した場合でもパニックにならないでください。

k.最初の段階では [詳細設定] タブの内容は気にしないでください。このタブは、同じコンピュータから複数の携帯電話を同時に制御したい場合にのみ使用できます。ポート番号を変更する必要があります。ブートストラップ ポート、これだけは覚えておいてください

2)一般設定:

[一般設定] では、通常はデフォルト設定を使用しますが、後の学習を容易にするために調整できる基本設定がいくつかあります。ページ全体はサーバーとログの 2 つの部分に分かれており、デフォルトでは下の図のような状態になっています。

        

a.サーバーアドレス: appium サービスのアドレスを設定します。通常は変更する必要はありませんが、複数の携帯電話を設定して複数の appium サービスを開始する必要がある場合は、ここでポート番号を調整する必要があります。複数のポートがある場合、同じポートを取得するとエラーが報告されます。

b.既存のセッションを上書きする:セッションの範囲、初心者はセッションが何なのか理解できないかもしれませんが、ここでは一時的にセッションとして理解していますが、これは私とあなたとのセッションの唯一の兆候です。

c.ファイルにログ:デフォルトの状態ではデータがありませんが、選択後は、実行時に appium によって生成されたログが、設定した問題ファイルに保持されるため、自動化を実行するときにこれを選択することをお勧めします。後のバグの位置特定に大きな影響を与えます。覚えて!

3) 開発者設定 (左側の 3 番目のボタン、悪役アイコン) はめったに使用されないため、無視できます。興味のある方は興味本位で覗いてみてはいかがでしょうか。

4) (左から 4 番目のボタン、疑問符アイコン) について、現在の appium バージョン情報を確認します。

5) 要素検出 (右側の 2 番目のボタン、虫眼鏡アイコン): このボタンの機能は Firebug の位置決めツールの機能と似ていますが、システム構成が正しいかどうかを検出する別の機能があります。項目 パラメータが正しくない場合、この関数を使用するとエラーが報告されます。携帯電話に正常に接続していないと機能しません。SDK ツールに付属の uiautomatorviewer を使用することをお勧めします。

6) サービスの開始 (右側の最初のボタン、三角形のアイコン): すべてのパラメータを設定したら、appium サービスを開始するだけで、開始後にのみ自動化を行うことができます。

7) ログのクリア (右下隅、ゴミ箱アイコン): スクリプトの作成中およびデバッグ中に大量のログが表示されますが、途中の一定期間だけを表示したい場合は、次のログをクリアできます。この時点でページはクリアされます。

2. ログ解析(スレーブ言語)

  これまでの学習と実践を通じて、多くの友人が appium を起動して、携帯電話やエミュレーターにアプリを自動的にインストールできるようになったと思いますが、現時点では、多くの人が appium のパネルやコンソールを見て頭が痛くなるでしょう。appium サービスのページがログをスクロールし続けるのですが、内容が理解できません。これはよくある問題かもしれません。次に、このログを分析して、混乱しないように、以下のログを大まかに解釈してみましょう。各行の上の解釈を誰でも理解しやすいように構成します。

IP、ポート、および UID を指定して appium サービスを開始します

192:~ ytxu$ appium -a 127.0.0.1 -p 4723 -U 127.0.0.1:62001

正常に開始

[Appium] Appium v​​1.6.3 へようこそ

[app] デフォルト以外のサーバー引数:

正常に起動した後のサービスアドレス

[Appium]アドレス:「127.0.0.1」

私たちの uid、私がここにいるのはリンクされたエミュレーターなので、この IP を使用します

[アプリ] uid: '127.0.0.1:62001'

[Appium] 非推奨のサーバー引数:

システムはそれらを自動的に辞書につなぎます

[Appium] -U,--udid => --default-capabilities '{"udid":"127.0.0.1:62001"}'

[Appium] デフォルトの機能。必要な機能によってオーバーライドされない限り、各リクエストに追加されます。

[アプリ] uid: '127.0.0.1:62001'

REST http インターフェイスはどのポートをリッスンしていますか?

[Appium] Appium REST http インターフェイス リスナーが 127.0.0.1:4723 で開始されました

POST を通じてセッションが作成されます。このセッションの値は、アプリを構成するときのデータです。ここでは、システムが自動的に辞書形式に変換し、キーが値に対応します。よく見てみると、見慣れないものではないことがわかります。

[HTTP] --> POST /wd/hub/session {"requiredCapabilities":{},"desiredCapabilities":{"deviceName":"127.0.0.1:62001","app":"/Users/ytxu/Desktop/AppiumPython/apps/mukewang.apk","autoLaunch":"true","platformVersion":"4.1","appPackage":"cn.com.open.mooc","platformName":"Android","appActivity":"cn.com.open.mooc.index.splash.MCSplashActivity"}}

[debug] [MJSONWP] Calling AppiumDriver.createSession() with args: [{“deviceName":"127.0.0.1:62001","app":"/Users/ytxu/Desktop/AppiumPython/apps/mukewang.apk","autoLaunch":"true","platformVersion":"4.1","appPackage":"cn.com.open.mooc","platformName":"Android","appActivity":"cn.com.open.mooc.index.splash.MCSplashActivity"},{},null,null,null]

セッションを作成し、会話を開始する準備をし、最初に入力したデータを渡し、サーバーを使用して検証します。成功すると、セッションが開始されます。

[Appium] Creating new AndroidDriver session

[Appium] Capabilities:

[Appium]   deviceName: '127.0.0.1:62001'

[Appium]   app: '/Users/ytxu/Desktop/AppiumPython/apps/mukewang.apk'

[Appium]   autoLaunch: 'true'

[Appium]   platformVersion: '4.1'

[Appium]   appPackage: 'cn.com.open.mooc'

[Appium]   platformName: 'Android'

[Appium]   appActivity: 'cn.com.open.mooc.index.splash.MCSplashActivity'

[Appium]   udid: '127.0.0.1:62001'

[debug] [AndroidDriver] AndroidDriver version: 1.10.38

これを見てもまだ面倒だと思いますか?実際、注意深く観察する限り、すべてを簡単に理解できます。ここにいる友人の中には、始めるのは簡単だと言う人もいるかもしれませんが、実際に遭遇する問題はそれほど簡単ではないので、実際の問題を見てログを直接見てみましょう。

[Appium] Creating new AndroidDriver session

[Appium] Capabilities:

[Appium]   deviceName: '127.0.0.1:62001'

[Appium]   app: '/Users/ytxu/Desktop/AppiumPython/apps/mukewang.apk'

[Appium]   autoLaunch: 'true'

[Appium]   platformVersion: '4.1'

[Appium]   appPackage: 'cn.com.open.mooc'

[Appium]   platformName: 'Android'

[Appium]   appActivity: 'cn.com.open.mooc.index.splash.MCSplashActivity'

[Appium]   udid: '127.0.0.1:62001'

[debug] [AndroidDriver] AndroidDriver version: 1.10.38

  このログを初めて見たときから、皆さんの最初の反応がめまいを感じていることはわかっていたので、詳しく見てみましょう。ログの最初の行は、おそらく「このアクティビティを実行するために最善を尽くしましたが、まだ存在しません。」ということを意味します。これを見たときは、質問について考える必要があります。前にページを構成したときに、次のように述べました。パッケージを設定した場合、またはアクティビティが間違っている場合は、開始できません。このアクティビティが存在しないと言われたので、慎重に確認する必要がありますか?

  実際、ログ全体で、エラー部分に直接移動する必要があります。[ADB] エラー: アプリの起動に使用されるアクティビティが存在しないか、起動できません! 存在し、起動可能なアクティビティであることを確認してください。これがエラーです。このアクティビティを開始できないというプロンプトも表示されます。開始する前にもう一度確認してください。

この小さな実験から、ログ自体は難しくないことがわかります。問題は、注意深く調べなかったことです。したがって、今後問題が発生した場合でも動揺せず、ログを注意深く読んで問題を解決する必要があります。

3. アピウムの動作原理(奴隷の家事スキル)

  システムやフレームワークに精通しているときは、それをよく学びたいと思うものですが、動作原理を理解する必要があるのでしょうか? 彼の仕組みを知って初めて、将来難しい問題に遭遇したときに問題を根本的に解決することができます。その前に余談ですが、appium がどのようにして自動化を実現しているのか考えたことがある人はいるでしょうか?iOS、Androidを問わず、自動化を行う際はセキュリティなどを考慮して直接操作することができないため、自動化する場合には各社が公開しているツールを利用する必要があり、AndroidではUIAutomator、iOSではUIAutomationを使用します。 、私たちが自動化と呼んでいるものは、私たちが使用するツールが公開しているフレームワークを呼び出して実行する方法です。appium がどのように機能するかを見てみましょう。まず写真を見てください。

  上の図から、appium は WebDriver プロトコルに基づいていることがわかります。彼は、Bootstrap を使用して、Google が公開している Android 用の自動テスト フレームワークである UIauTomator のコマンドを呼び出し、アプリを自動化しています。もう 1 つ理解できることは、コンピューター (クライアント) でオートメーションを実行します。テスト スクリプトは Webdriver インターフェイスを呼び出します。appium サーバーがクライアントから送信されたコマンドを受信した後、これらのコマンドを UIauTomator によって認識されるコマンドに変換し、UIauTomator がオートメーションを実行します。

  おそらくここにいる友人の中には、「Android がこんな感じなら、iOS もそうなのか?」と混乱する人もいるかもしれません。実際、これらは似ていますが、サポートするツールは異なります。iOS は UIAutomation を使用します。まず、クライアントはスクリプト リクエストを送信し、次に appium サービスに移動します。ここで、appium はインストゥルメントを呼び出してサーバーを起動し、その後、彼は後続の操作を実行して自動化を完了します。注: UIAutomation はインストゥルメントの下にあるツールなので、パニックにならないでください。

4. Appiumの利点(Nujiaの利点)

  現在、成熟したものであるか一般的なものであるかにかかわらず、市場には多くの自動化フレームワークがあり、それらすべてに精通することは不可能ですが、共通のものを理解する必要があります。そうでない場合、それが良いか悪いかをどうやって知ることができますか? ? オートメーションを学ぶときに、なぜ appium を学ぶ必要があるのか​​を考えたと思います。実際、最初にモバイル オートメーションを始めたときは robotium を選択しましたが、プロジェクトのニーズのため、後になって、単に使用すればよいことがわかりました。 robotium を試してみたら ios が全然できないことが分かったので、それを使おうと思いました 別途作る必要があり、とても面倒です この時期 Appium が出たばかりで、最初に来たときはこれを使おうと思いました以前にWebオートメーションを行うときにSeleniumを使用したため、これは非常に便利です。以下にその利点を列挙してみましょう。

1. AndroidとiOSを同時にサポートできます

2. Java、Python、php、Rubyなどの複数の言語をサポートします。

3. 複雑な環境を心配する必要はありません

4. Selenium の経験がある場合は、直接開始してください

上記から判断すると、まだまだメリットはたくさんありますが、好印象を損なわないように、ここには記載されていないデメリットももちろんあります。

これを見ると、すでにAppiumの影がはっきりと見えてきましたか?次に必要なのは実戦です。

5. まとめ

1. appium Mac と Windows には 2 つのインストール モードがあり、1 つはクライアント経由でインストールされ、もう 1 つはターミナル経由でインストールされます。

1 台のマシンで自動化を行うことは絶対に不可能です。それはあまり意味がないため、複数のコンピュータをリンクして実行することがよくありますが、appium は複数のコンピュータを接続するときに複数の appium を起動する必要があります。クライアント経由でサービスをインストールする場合は、次のものが必要です。複数のマシンを接続するときに複数回起動して構成します。これは、コンピュータ自体のパフォーマンス テストでもあります。ターミナル コマンドを使用してインストールした場合は、起動時にコマンドを使用して複数のサービスを開始するだけで済みます。ここでここまで言う理由は、著者がプロジェクトに取り組んでいたときに、マシン上で 5 つの appium クライアントを起動しました。このケースを長時間実行すると、appium サービスは自動的にハングアップしますが、10 を超えるサービスが起動したためです。端末のインストールによって開始されますが、同時に実行しても問題ありません。これは私の経験から必ずしも真実ではありませんが、読者は自分の好みに応じて選択できます。

Appium クライアントのインストール:

(1) 公式ダウンロードに移動します。リダイレクトは  、遅いものと比べて比較的遅いです。

パッケージをインストールした後、愚かな方法で直接インストールします。すべては次のステップであり、デフォルトで問題ありません。(Windowsも同様です)

appium ターミナルのインストール:

ターミナルにコマンド npm install -g appium を直接入力します。(実行に sudo を使用しないように注意してください) インストール プロセス中にエラーを報告しなければ、正常にインストールされます。エラーを報告しても心配しないでください。Baidu で解決できるか、私に連絡してください。デフォルトの appium コマンドのインストールは、さまざまな理由で失敗したため、海外にリクエストすることになっています。そのため、次のコマンドを使用して国内のミラー インストールにアクセスすることをお勧めします。 npm --registry http://registry.cnpmjs.org install -g appium成功したら「appium」と入力します。「Appium へようこそ」というプロンプトが表示され、インストールが成功したことが示されます。


              [以下は、私が編集した 2023 年の最も完全なソフトウェア テスト エンジニア学習ナレッジ アーキテクチャ システム図です]


1. Pythonプログラミングの入門から習得まで

2.インターフェース自動化プロジェクトの実戦

3. Web自動化プロジェクトの実戦


4. アプリ自動化プロジェクトの実戦

5. 一流メーカーの再開


6. DevOps システムのテストと開発

7. 一般的に使用される自動テストツール


8、JMeterのパフォーマンステスト

9. まとめ(最後にちょっとしたサプライズ)

寿命が長いのでオイルを追加してください。すべての努力は決し​​て裏切られることはなく、粘り強く続ける限り、最後には必ずご褒美が得られます。自分の時間を大切にして夢を追いかけてください。初心を忘れず、前に進んでください。あなたの未来はあなたの手の中にあります!

人生は短く、時間は貴重です。将来何が起こるかを予測することはできませんが、現在の瞬間を把握することはできます。一日一日を大切にし、自分自身をより強く、より良くするために努力してください。確固たる信念、粘り強い追求、成功はやがてあなたのものになります。

常に自分自身に挑戦することによってのみ、常に自分を超えることができます。夢を追い続け、勇敢に前進すれば、その葛藤の過程がとても美しく、やりがいのあるものであることに気づくでしょう。自分を信じてください、あなたならできるよ!

情報の入手方法:
このドキュメントとビデオ情報は、[ソフトウェア テスト] に参加したい友人にとって、最も包括的かつ完全な準備倉庫となるはずです。この倉庫は、最も困難な旅を乗り越える何万人ものテスト エンジニアにも同行してきました。Hope Can helpあなたも!上記のすべてを共有することができます。下の小さなカードをクリックして、受信するグループに参加してください。

おすすめ

転載: blog.csdn.net/NHB456789/article/details/131764835