from time import sleep from pymobiledevice3.lockdown import create_using_usbmux from pymobiledevice3.services.dvt.instruments.process_control import ProcessControl from pymobiledevice3.services.installation_proxy import InstallationProxyService from pymobiledevice3.services.dvt.dvt_secure_socket_proxy import DvtSecureSocketProxyService import wda DD_BUNDLE_ID = 'com.laiwang.DingTalk' # 钉钉包名 WDA_BUNDLE_ID = 'com.caner.test.xctrunner' #个人包名 UDID = '00008030-000415D614E0402E' # pymobiledevice3 usbmux list 查看手机id # 启动app def launchApp(lockdown,installer,BUNDLE_ID,Name): if(BUNDLE_ID and lockdown and installer): Apps = [app for app in installer.get_apps() if Name in app] if len(Apps): if Apps[0] == BUNDLE_ID: with DvtSecureSocketProxyService(lockdown) as dvt: process_control = ProcessControl(dvt) pid = process_control.launch(BUNDLE_ID) print("启动app",pid,BUNDLE_ID) sleep(3) return True else: return False else: return False else: return False def main(): try: # 连接手机 lockdown = create_using_usbmux() print("是否已连接手机",lockdown.developer_mode_status) # 获取已安装的app with InstallationProxyService(lockdown) as installer: # 启动WDA wda_start = launchApp(lockdown,installer,WDA_BUNDLE_ID,'xctrunner') if(wda_start): print('已启动wda') # 连接WDA客户端 wdaClient = wda.USBClient(UDID) if(wdaClient): # 启动钉钉 dd_start = launchApp(lockdown,installer,DD_BUNDLE_ID,'DingTalk') if(dd_start): gzt = wdaClient(name="工作台, ",label="工作台, ") if(gzt.exists): print('找到工作台按钮') gzt.click() else: print('未找到工作台,需要重启app') # # 点击工作台 # wdaClient.tap(207,837) # sleep(3) # # 点击考勤打卡 # wdaClient.tap(41,420) # sleep(3) # # 打卡 # # wdaClient.tap(206,555) # a = wdaClient.xpath # print('啥意思',a) else: print("没找到钉钉安装包") else: print("连失败") else: print("没找到WDA安装包") except ConnectionError as e: print("连接失败",e) if __name__ == '__main__': main()