test.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from time import sleep
  2. from pymobiledevice3.lockdown import create_using_usbmux
  3. from pymobiledevice3.services.dvt.instruments.process_control import ProcessControl
  4. from pymobiledevice3.services.installation_proxy import InstallationProxyService
  5. from pymobiledevice3.services.dvt.dvt_secure_socket_proxy import DvtSecureSocketProxyService
  6. import wda
  7. DD_BUNDLE_ID = 'com.laiwang.DingTalk' # 钉钉包名
  8. WDA_BUNDLE_ID = 'com.caner.test.xctrunner' #个人包名
  9. UDID = '00008030-000415D614E0402E' # pymobiledevice3 usbmux list 查看手机id
  10. # 启动app
  11. def launchApp(lockdown,installer,BUNDLE_ID,Name):
  12. if(BUNDLE_ID and lockdown and installer):
  13. Apps = [app for app in installer.get_apps() if Name in app]
  14. if len(Apps):
  15. if Apps[0] == BUNDLE_ID:
  16. with DvtSecureSocketProxyService(lockdown) as dvt:
  17. process_control = ProcessControl(dvt)
  18. pid = process_control.launch(BUNDLE_ID)
  19. print("启动app",pid,BUNDLE_ID)
  20. sleep(3)
  21. return True
  22. else:
  23. return False
  24. else:
  25. return False
  26. else:
  27. return False
  28. def main():
  29. try:
  30. # 连接手机
  31. lockdown = create_using_usbmux()
  32. print("是否已连接手机",lockdown.developer_mode_status)
  33. # 获取已安装的app
  34. with InstallationProxyService(lockdown) as installer:
  35. # 启动WDA
  36. wda_start = launchApp(lockdown,installer,WDA_BUNDLE_ID,'xctrunner')
  37. if(wda_start):
  38. print('已启动wda')
  39. # 连接WDA客户端
  40. wdaClient = wda.USBClient(UDID)
  41. if(wdaClient):
  42. # 启动钉钉
  43. dd_start = launchApp(lockdown,installer,DD_BUNDLE_ID,'DingTalk')
  44. if(dd_start):
  45. gzt = wdaClient(name="工作台, ",label="工作台, ")
  46. if(gzt.exists):
  47. print('找到工作台按钮')
  48. gzt.click()
  49. else:
  50. print('未找到工作台,需要重启app')
  51. # # 点击工作台
  52. # wdaClient.tap(207,837)
  53. # sleep(3)
  54. # # 点击考勤打卡
  55. # wdaClient.tap(41,420)
  56. # sleep(3)
  57. # # 打卡
  58. # # wdaClient.tap(206,555)
  59. # a = wdaClient.xpath
  60. # print('啥意思',a)
  61. else:
  62. print("没找到钉钉安装包")
  63. else:
  64. print("连失败")
  65. else:
  66. print("没找到WDA安装包")
  67. except ConnectionError as e:
  68. print("连接失败",e)
  69. if __name__ == '__main__':
  70. main()