ADBはAndroidSDKのツールです。ADBを使用すると、Androidエミュレーターまたは実際のAndriodデバイスを直接操作および管理できます。
ADBの主な機能は次のとおりです。
1、 Androidデバイスでシェル(コマンドライン)を実行する
2、 エミュレータまたはデバイスのポートマッピングを管理する
3、 コンピューターとデバイス間でファイルをアップロード/ダウンロードする
4、 ローカルAPKソフトウェアをコンピューターからAndroidエミュレーターまたはデバイスにインストールします
Pythonにはadbコマンドを呼び出す2つの方法があります。1つはos.system()で、もう1つはos.popen()です。
両者の違いは、前者は戻り値を取得できず、後者は戻り値を取得できることです。
os.popen()は、read()メソッドを使用して直接読み取ることができるファイルオブジェクトを返します。
コンテンツの拡張:
**python **でadbコマンドを呼び出す方法
osとsubprocessの2つのモジュールを使用して、Pythonでcmdコマンドを実行できます。違いは、osがブロッキングであり、サブプロセスが非ブロッキングであるため、サブプロセスを使用する方が適していることです。次に、接続されたデバイスにクエリを実行して、Pythonでどのように記述されているかを確認するコマンドを実行します。使用されるコマンドはadbデバイスです。
import subprocess
order='adb devices' #接続されたデバイスを取得する
pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)
print pi.stdout.read() #結果を印刷する
実際の印刷結果では、現在のコンピューターが3つのデバイスに接続されていることがわかります。ここで、adb devicesコマンドの結果は1回限りなので、readメソッドを使用して問題なくデータを読み取ることができることを再度説明する必要があります。ただし、携帯電話のログを出力するコマンドlogcatなど、一部のadbコマンドはリアルタイムで結果を返します。結果は、現在のデバイス操作ログ情報の内容を引き続き出力します。このタイプのコマンドの印刷結果をpythonで取得する必要がある場合、引き続きreadメソッドを使用すると、結果が返されるのを待つ時間が非常に長くなるため、ここで変更する必要があります。結果を読み取る1つの方法は次のとおりです。
import subprocess
order='adb logcat'
pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)for i initer(pi.stdout.readline,'b'):
print I
この印刷効果は、cmdの操作と同じで、ログ情報をリアルタイムで出力します。ここでは、readlineメソッドを使用します。実際、この書き込みメソッドは、ファイルの読み取り、1行の読み取り、およびコンテンツ全体の読み取りに似ています。 pyappのフレームワークは基本的に記述されているため、この記事を記述し、adbコマンドの処理におけるpythonの経験の一部を共有することを考えています。現在、adbコマンドの呼び出しにおけるpythonの主な違いは、これら2つの点です。目的は、結果データを取得するために必要な機能コマンドを見つけ、返されたデータをpythonで処理して、自動テストの目的を達成することです。誰もがadbコマンドを上手に使用する必要がありますが、各コマンドのさまざまなパラメーターの組み合わせにも注意する必要があります。たとえば、pyappの実装はマルチデバイス接続をサポートしているため、携帯電話でadbコマンド操作を実行する場合は-sとデバイス番号を入力して、操作する特定のデバイスを示します。そうしないと、コマンドでエラーが報告されます。
たとえば、デバイスをクリックすると、コマンドは次のように記述されます。adb-s49dsd4554wdsaシェル入力タップ600900、ここで「49dsd4554wdsa」はデバイス番号、「600900」は画面座標をクリックします。したがって、-sを追加すると、複数のデバイスを同時に簡単に操作できることがわかります。
これまでのところ、pythonでのadbの機能に関するこの記事をここで紹介します。pythonadb関数の詳細な説明については、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後、ZaLou.Cnをさらにサポートしていただければ幸いです。 !
Recommended Posts