在我的Appium Python脚本中,这是我通常如何进行需要输出以下内容的ADB调用的示例:
target_device = str(subprocess.check_output(["adb", "-s", device1, "shell", "getprop | grep ro.product.model"]))
这很好用,因为语法非常简单。但是,我遇到了以下adb命令,该命令将提供设备的IMEI,这很酷。在这里:
adb shell service call iphonesubinfo 1 | awk -F"'" 'NR>1 { gsub(/\./,"",$2); imei=imei $2 } END {print imei}'
但是,当您尝试从Python Appium脚本中运行该adb命令时,正如您可以想象的那样,所有引号都变得非常混乱,最终我无法成功运行它。但是,从命令提示符运行时,它确实可以正常工作(我已经对其进行了测试)。
所以我的问题是,如何使用子进程运行该IMEI命令? 我尝试了几种操作,但是没有任何效果!!!谢谢
例如
target_device_imei = str(subprocess.check_output(["adb", "-s", device1, "shell", "service call iphonesubinfo 1 | awk -F"'" 'NR>1 { gsub(/\./,"",$2); imei=imei $2 } END {print imei}']))
找出解决方案:
import subprocess, re
device_imei = str(subprocess.check_output(["adb","shell", "service call iphonesubinfo 1"]))
device_imei = re.findall(r"'(.*?)(?<!\\)'", device_imei)
device_imei = "".join(device_imei)
device_imei = device_imei.replace('.','')
print device_imei