两种方式通过Python代码脚本的方式获得已连接设备号

前提:

我们可以在命令行使用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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值