一增蹭、使用方法
1.查找App的包名和進程名稱
adb shell dumpsys window windows | findstr mCurrentFocus
2.輸入內(nèi)容鏈接到app
3.點擊開啟錄制
4.錄制需要的步驟即可
5.錄制的部分自動生成代碼
6.如果需要壓測捅膘,把相關(guān)代碼copy出來鬓照,新建python文件懦窘,將其寫入到for循環(huán)中即可泪漂。
二泼掠、常用的一些方法
def screen_shot(self, appPath):
"""
? ? 獲取當(dāng)前設(shè)備的截圖,導(dǎo)出到指定目錄"""
? ? 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):
"""
? ? 獲取當(dāng)前應(yīng)用界面的包名和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):
"""
? ? 獲取當(dāng)前運行的應(yīng)用的包名"""
? ? pkg =self.get_focused_package_and_activity().split("/")
if len(pkg) >0:
return pkg[0]
else:
return ''
def get_current_activity(self):
"""
? ? 獲取當(dāng)前運行應(yīng)用的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匹配的應(yīng)用包名列表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):
"""
? ? 判斷應(yīng)用是否安裝押搪,已安裝返回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):
"""
? ? 獲取指定應(yīng)用的versionName
? ? :param package:應(yīng)用包名? ? :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):
"""
? ? 獲取指定應(yīng)用的versionName
? ? :param package:應(yīng)用包名? ? :return: 包名"""
? ? versionName =""
? ? for packagein self.shell_output('dumpsys package %s' % package).splitlines():
if 'versionName' in package:
versionName = package.split('=', 2)[1].strip()
return versionName