一、使用方法
1.查找App的包名和進程名稱
adb shell dumpsys window windows | findstr mCurrentFocus
2.輸入內容鏈接到app
3.點擊開啓錄製
4.錄製需要的步驟即可
5.錄製的部分自動生成代碼
6.如果需要壓測,把相關代碼copy出來,新建python文件,將其寫入到for循環中即可。
二、常用的一些方法
def screen_shot(self, appPath):
"""
獲取當前設備的截圖,導出到指定目錄"""
self.shelltimeout("/system/bin/screencap -p /sdcard/temp.png", 10)
self.pull('/sdcard/temp.png', appPath)
self.shelltimeout("rm /sdcard/temp.png", 5)
def get_wifi_name(self):
"""
查詢連接wifi名稱"""
for packagein self.shell_output('dumpsys wifi').splitlines():
if package.startswith('mWifiInfo'):
wifi_name = re.findall(r'SSID:([^"]+), BSSID', package)
if not wifi_name:
return ''
else:
return wifi_name[0].strip()
def touch_by_element(self, element):
"""
點擊元素 usage: touchByElement(Element().findElementByName(u"計算器"))
"""
self.shelltimeout("input tap %s %s" % (str(element[0]), str(element[1])), 30)
time.sleep(0.5)
def get_focused_package_xml(self, save_path):
file_name = random.randint(1, 999)
self.shelltimeout(
'uiautomator dump /data/local/tmp/{}.xml'.format(file_name), 10)
self.pull('/data/local/tmp/%s.xml' % file_name, save_path)
def get_focused_package_and_activity(self):
"""
獲取當前應用界面的包名和Activity,返回的字符串格式爲:packageName/activityName
"""
output =self.shell_output('dumpsys window windows | grep mCurrentFocus')
output = output.strip().split()
if output[-1].endswith('}'):
return output[-1][:-1]
else:
return output[-1]
def get_current_package_name(self):
"""
獲取當前運行的應用的包名"""
pkg =self.get_focused_package_and_activity().split("/")
if len(pkg) >0:
return pkg[0]
else:
return ''
def get_current_activity(self):
"""
獲取當前運行應用的activity
"""
pkg =self.get_focused_package_and_activity().split("/")
if len(pkg) >0:
return pkg[-1]
else:
return ''
def get_matching_app_list(self, keyword):
"""
模糊查詢與keyword匹配的應用包名列表usage: getMatchingAppList("com.gitvdemo.video")
"""
matApp = []
for packagein self.shell_output('pm list packages %s' % keyword).strip().splitlines():
package_info = package.split(":")
if len(package_info) >0:
if '=' in package_info[1]:
matApp.append(package_info[1].split('=')[1])
else:
matApp.append(package.split(":")[-1])
return matApp
def list_dir(self, _dir, find_str=None):
dirs =self.shell_output('ls ' + _dir)
if find_str:
grep_cmd = [find_util, find_str]
p =self.Popen(grep_cmd, stdin=subprocess.PIPE)
out, err = p.communicate(dirs)
return out.strip()
else:
return dirs
def is_install(self, packageName):
"""
判斷應用是否安裝,已安裝返回True,否則返回False
usage: isInstall("com.gitvdemo.video")
"""
if self.get_matching_app_list(packageName):
return True
else:
return False
def specifies_app_version_name(self, package):
"""
獲取指定應用的versionName
:param package:應用包名 :return: 包名,versionName
"""
versionName =""
versionCode =""
for packagein self.shell_output('dumpsys package %s' % package).splitlines():
if 'versionName' in package:
versionName = package.split('=', 2)[1].strip()
if 'versionCode' in package:
versionCode = package.split()[0].split('=', 2)[1].strip()
return versionName +"-" + versionCode
def get_app_version_name(self, package):
"""
獲取指定應用的versionName
:param package:應用包名 :return: 包名"""
versionName =""
for packagein self.shell_output('dumpsys package %s' % package).splitlines():
if 'versionName' in package:
versionName = package.split('=', 2)[1].strip()
return versionName