前提:
我们可以在命令行使用adb命令“adb devices”得到我们已经连接好的设备号:
但是我们现在想通过Python代码脚本的方式获得设备号,该怎么做呢~?
(我们用脚本去得到设备号有利于以后脚本写别的内容,先做好基础)
方式一:
通过传参的方式,即传入设备号!这种会在自动化平台用得到~
完整代码:
import sys
if __name__ == "__main__":
print("开始执行程序...")
argv = sys.argv[1:]
if not argv: # 如果参数列表为空
print("错误:请提供设备名称")
sys.exit(1)
device_list = argv[0] # 第一个参数
second_param = argv[1] # 第二个参数
print(f"第一个参数: {device_list}")
print(f"第二个参数: {second_param}")
解读代码:
1. argv = sys.argv[1:]
假设运行命令是:python script.py device1
则:sys.argv 原本是 ['script.py', 'device1']
argv = sys.argv[1:] 后变成 ['device1']
=> 所以argv[0] 就是device1 ; 而argv[1] 就是device2 ........以此类推
运行时带上参数:
1.点击顶部菜单栏的 "Run" -> "Edit Configurations"
2. 在 "Parameters" 输入框中输入你要传递的参数
3.点击 "Apply" 和 "OK"
运行结果:
PS思考:在PyCharm里面需要我们手动去输入设备号,才能去做后面的事情,而放在自动化平台上面可以直接选择某些设备关联起来,就会非常方便
方式二:
完整代码:
# 测试获取设备列表
import subprocess
def get_device_list():
"""获取连接的所有设备列表"""
try:
# 获取设备列表
command = "adb devices"
result = subprocess.run(command, shell=True, capture_output=True, text=True)
devices = []
for line in result.stdout.splitlines():
if "\tdevice" in line:
device_id = line.split("\t")[0]
devices.append(device_id)
return devices
except subprocess.CalledProcessError as e:
print(f"获取设备列表失败: {e}")
return []
if __name__ == "__main__":
print("开始执行程序...") # 添加调试信息
devices = get_device_list()
print(f"找到的设备: {devices}")
运行:
这个就直接点击运行即可~会自动获取全部的已连接设备
两种方式的区别:
方式一:一台设备运行此脚本就是得到自己的设备号
举个例子: device1得到的就是device1,而device2得到的就是device2
方式二:一台设备运行得到的是所有已连接的设备号
举个例子:device1得到的是device1 device2,而device2得到的也是device1 device2(前提是已连接了device1和device2)