1. 程式人生 > >Python之使用adb shell命令啟動應用

Python之使用adb shell命令啟動應用

一直有一個心願希望可以用Python做安卓自動化功能測試,在一步步摸索中,之前是用monkeyrunner,但是發現對於控制元件ID的使用非常具有侷限性,尤其是ID的內容不便於區分

具有重複性時,後面又發現Uiautomator可以對resorceId、text、packageName等元素進行定位,也找到了xiaochong這位大神關於uiautomator的封裝包,連結如下:

https://github.com/xiaocong/uiautomator

做為一個小白,這一切都需要摸索,在克服了安裝uiautormator封裝包的問題後,又卡在啟動應用這個問題上,之前使用monkeyrunner時啟動應用使用的是如下程式碼:

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage

package = 'com.android.settings'

activity = '/.Settings'

runcomponent = package + activity

device.startActivity(component = runcomponent)

也是我無知,嘗試了很久,終於找到了adb shell am start 包名/Activity啟動,以設定應用為例,程式碼如下

import os

os.system(“adb shell am start -n com.android.settings/.Settings”)

執行結果如下:

Starting: Intent { cmp=com.android.settings/.Settings }
0

成功進入設定應用介面,接下來可以嘗試其它你想做的操作了

當然這只是解決了我在PC上執行的問題,在查詢問題時有留意到uiautomator最終是要編譯成jar檔案是要放到android裡面的虛擬環境去執行命令,但是android內部並沒有adb 

環境,所以adb命令會失敗,必須得找到能夠在android也可以執行的方法

以此做個備忘,希望自己可以在這條路上走得越來越遠

加油吧

相關推薦

Python使用adb shell命令啟動應用

一直有一個心願希望可以用Python做安卓自動化功能測試,在一步步摸索中,之前是用monkeyrunner,但是發現對於控制元件ID的使用非常具有侷限性,尤其是ID的內容不便於區分 具有重複性時,後面又發現Uiautomator可以對resorceId、text、packa

java中呼叫adb shell 命令啟動android應用程式

先把adb shell命令做成bat檔案,然後再程式中呼叫即可,   adb shell am start -n com.sankuai.meituan/com.sankuai.meituan.act

python執行shell命令

python[[email protected]/* */ ~]# python Python 2.7.5 (default, Sep 15 2016, 22:37:39) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2 Type "help",

如何使用adb shell命令啟動一個安裝好的apk

                            前幾天在給平板做完cts測試之後平板的觸屏失效了,後來經理給了一個解決方案,就是把平板的觸屏韌體刷一下。接著問題就來了,既然觸屏失效了,那麼應該如何啟動一個安裝好的apk呢?下面就是步驟了,大家可以參考一下:    

python調用shell命令三慷慨法

ech ces nds 不用 準備 每一個 popen函數 通信 hello preface: 忙於近期的任務,須要用到libsvm的一些命令。如在終端執行javasvm_train train_file model_file. pythonsubset.py file t

adb shell命令整理service

service可給Android 服務傳訊息,具體用法如下: Usage: service [-h|-?]         service list         service check SERVICE         service call SERVICE CO

adb shell命令整理svc

--SVC命令:這個指令碼在/system/bin目錄下,這個命令可以用來控制電源管理,wifi開關,資料開關(就是上網流量) 1.螢幕相關:svc power stayon [true|false|usb|ac]--設定螢幕的常亮,true保持常亮,false不保持,us

Android 通過adb shell命令檢視記憶體,CPU,啟動時間,電量等資訊

1、 檢視記憶體資訊 1)檢視所有記憶體資訊 命令: dumpsys meminfo 例: C:\Users\laiyu>adb shell shell@android:/ $ dumpsys meminfo 2)檢視某個包的記憶體資訊

python 調用shell命令的方法

mman status 不包含 shel 標準庫函數 cal adl lin commands 在python程序中調用shell命令,是件很酷且常用的事情…… 1. os.system(command) 此函數會啟動子進程,在子進程中執行command,並返回

python路_day78_django中ajax應用

amp 用戶 入門 一個 height orm 性能 obj 結束 一、Ajax介紹   Ajax(Asynchronous Javascript And XML)翻譯成中文就是“異步Javascript和XML”。即使用Javascript語言與服務器進行異步交互,傳輸的

Python系統shell交互(subprocess)

pycharm tar 命令行 安全 false resolv turn 等價 如何 os與commands模塊 subprocess模塊 subprocess.Popen類 總結 我們幾乎可以在任何操作系統上通過命令行指令與操作系統進行交互,比如Linux平臺下的sh

Android 測試 adb shell

一次 eve focus pad eth andro event rod RoCE 一、發送鍵盤事件: 命令格式1:adb shell input keyevent "value" 其中value以及對應的key code如下表所列: KeyEvent Value

PythonDjango基本命令

ecif 文件 collect 設置 word about 生產 操作數 建數據庫 一、新建項目 $django-admin.py startproject project_name # 特別是在 windows 上,如果報錯,嘗試用 django-admin 代替

Android成長記(1)-----android環境搭建與adb shell 命令

整理一下學習android一步一步存下來的自己總結或是從網上摘抄的比較不錯的文件,電腦要上交了,最捨不得的就是自己積累的這麼點東西了,所以決定釋出到黎梓小站,以供大家一起學習以及自己日後忘記了也有地方可找。 1.      htt

Linux系統下python程式碼執行shell命令的方法

方法一:os.popen #!/usr/bin/python # -*- coding: UTF-8 -*- import os, sys # 使用 mkdir 命令 a = 'ls' b = os.popen(a,'w',1) print b 方法二:os.system #!/

adb shell 命令

adb shell top top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.記憶體使用和執行時間對任務進行排序. top 用法   >adb shell top -h Usage: t

python中執行shell命令的幾個方法

1.os.system() a=os.system("df -hT | awk 'NR==3{print $(NF-1)}'") 該命令會在頁面上列印輸出結果,但變數不會保留結果,只會保留返回的狀態碼. 2.os.popen() os.popen()返回的是 file read 的物件,但沒有狀

python關於QTimer.singleShot()的應用記錄

# -*- coding: utf-8 -*- ''' 關於QTimer.singleShot()的應用記錄 ''' import time import numpy as np import matplotlib.pyplot as plt import winsound

androidadb 常用命令

adb常用命令: adb kill-server //關閉adb服務 adb start-server //啟動adb服務 adb reboot //重啟裝置 adb root //獲取root adb remount //重新掛載 adb push <

Python執行linux命令

def local_file_load(file, ver): """載入本地檔案上傳映象""" import subprocess file_name = os.path.ba