我试图同时在几个Android设备上同时安装Android APK。
我的想法是调用如下安装apk的shell命令:
adb -s DEVICE_NAME install APK &
随后&
启动新的终端进程。
我的Python脚本应同时执行install(device_name)
功能。但这并没有发生。有一个代码:
from ShellHelper import *
from threading import Thread
import time
import datetime
shellHelper = ShellHelper()
apk_dir = "app-automation-integrationTest.apk"
def install(device_name):
start_time = int(round(time.time() * 1000))
print('[{:%H:%M:%S}]: '.format(datetime.datetime.now())
+ "Installation started on device '" + device_name + "'.")
install_cmd = "adb -s " + device_name + " install " + apk_dir + " &"
shellHelper.execute_shell(install_cmd)
end_time = int(round(time.time() * 1000))
print('[{:%H:%M:%S}]: '.format(datetime.datetime.now())
+ "Installation ended on device '" + device_name + "'. It took: " + str(
(end_time - start_time) / 1000) + " seconds.")
if __name__ == '__main__':
Thread(target=install("emulator-5554")).start()
Thread(target=install("emulator-5556")).start()
Thread(target=install("emulator-5558")).start()
并记录:
[23:31:50]: Installation started on device 'emulator-5554'.
[23:32:33]: Installation ended on device 'emulator-5554'. It took: 42.671 seconds.
[23:32:33]: Installation started on device 'emulator-5556'.
[23:32:37]: Installation ended on device 'emulator-5556'. It took: 4.451 seconds.
[23:32:37]: Installation started on device 'emulator-5558'.
[23:32:46]: Installation ended on device 'emulator-5558'. It took: 8.98 seconds.
如果ADB能够同时安装apk,则抛开事实……我希望发生的事情与此类似:
[23:31:50]: Installation started on device 'emulator-5554'.
[23:31:50]: Installation started on device 'emulator-5556'.
[23:31:50]: Installation started on device 'emulator-5558'.
[23:32:10]: Installation ended on device 'emulator-5554'. It took: 20.00 seconds.
[23:32:30]: Installation ended on device 'emulator-5558'. It took: 40.00 seconds.
[23:32:33]: Installation ended on device 'emulator-5556'. It took: 43.00 seconds.
我究竟做错了什么?
//这有效
Thread(target=partial(install, "emulator-5554")).start()
Thread(target=partial(install, "emulator-5556")).start()
Thread(target=partial(install, "emulator-5558")).start()
和预期的结果:
[01:07:44]: Installation started on device 'emulator-5554'.
[01:07:44]: Installation started on device 'emulator-5556'.
[01:07:44]: Installation started on device 'emulator-5558'.
[01:08:00]: Installation ended on device 'emulator-5558'. It took: 15.303 seconds.
[01:08:00]: Installation ended on device 'emulator-5556'. It took: 15.571 seconds.
[01:08:01]: Installation ended on device 'emulator-5554'. It took: 16.748 seconds.
您可以通过args
在Thread构造函数中使用param来运行它,而无需局部运行:
Thread(target=install, args=('emulator-5558',)).start()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句