cmd/命令是正确的。我正在使用scrcpy录制视频。但我需要弄清楚如何在并行运行我的测试时记录Android设备的视频。
目前,如果我启动屏幕记录,它将不会开始并行运行测试。因为它会试图等待我的屏幕记录方法完成第一。
信息:开始记录到mp4文件:
它不会转到代码的下一行并运行测试。
但是我想同时做这两件事(在运行测试脚本时记录设备上发生的情况)。
启动屏幕第一次录制
def start_screenrecording(udid):
for o in udid:
sport = get_scrcpy_port()
print("Starting scrcpy screen recording")
cmd = "scrcpy --no-display " + "--serial " + o + " --record " + o + ".mp4 -p " + str(sport)
然后开始在并行中运行测试脚本。
def run_tests(udid):
threads=[]
for idx, device in enumerate(udid):
cmd = "robot --variable PLATFORM_VERSION:" + str(get_platform_version_of_android_phone(device)) + " --variable DEVICE_UDID:" + str(device) + " --variable APPIUM_PORT:" + str(appiumInstances[idx]) + " --variable DRIVER_PATH:" + driverPath + " --outputdir logs/" + device + "_" + get_model_of_android_phone(device)
#Start parallel screen recording for all the devices from this point
#Continue running the test scripts while screen recording is ongoing
t = threading.Thread(target=run_command, args = (cmd,))
t.daemon = True
threads.append(t)
for x in threads:
x.start()
sleep(3)
for x in threads:
x.join()
我们如何运行cmds
def run_command(cmd_array,os_name='posix'):
p = subprocess.Popen(cmd_array,shell=True,cwd=os.getcwd())
output,err = p.communicate()
print('output=%s'%output)
print('err=%s'%err)
return output
Scrcpy - https://github.com/Genymobile/scrcpy
发布于 2019-06-25 02:46:21
从问题中删除for循环,屏幕记录开始平稳地记录,同时在多个设备上执行我的测试脚本。
def start_screenrecording(udid):
for o in udid:
sport = get_scrcpy_port()
print("Starting scrcpy screen recording")
cmd = "scrcpy --no-display " + "--serial " + o + " --record " + o + ".mp4 -p " + str(sport)
scrcpyInstances.append(sport)
t = threading.Thread(target=run_command, args = (cmd,))
t.daemon = True
t.start()
https://stackoverflow.com/questions/56733347
复制相似问题