测试之家
  • 社区
  • 问答
  • 招聘
  • 社区学堂新
  • 开源项目
  • 活动
  • Wiki
  • 注册
  • 登录
会员
anshendoufunao (anshendoufunao)
第 59078 位会员 / 2021-01-22
1 篇帖子 • 17 条回帖
0 关注者
0 正在关注
0 收藏
未设置 GitHub 信息.
  • 个人信息
  • 专栏
  • 话题
  • 回帖
  • 收藏
  • 关注中
  • 关注者
  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年03月01日

    此贴终结:
    这个问题困扰了我好久,也翻墙到了 stackoverflow 去发帖求助仍没找到答案
    今天又重新研究了一下这个问题,
    大概情况是这样
    执行 subprocess.check_output(['adb', 'devices']) 时,里面最后调的是 run 方法

    def check_output(*popenargs, timeout=None, **kwargs):
        return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
                   **kwargs).stdout
    

    而 run 方法里面,调的是 Popen

    def run(*popenargs,
            input=None, capture_output=False, timeout=None, check=False, **kwargs):
             .......
            ........
           with Popen(*popenargs, **kwargs) as process:
               try:
                   stdout, stderr = process.communicate(input, timeout=timeout)
              except TimeoutExpired as exc:
                  process.kill()
    

    我一路 debug 下去,发现是在 Start the process 时就直接失败了,最终死在了这里

    class Popen(object):
        。。。。
        。。。。
        。。。。
      # Start the process
        try:
             hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
                                     # no special security
                                     None, None,
                                     int(not close_fds),
                                     creationflags,
                                     env,
                                     os.fspath(cwd) if cwd is not None else None,
                                     startupinfo)
          finally:
              ........
              .........
    

    随后我猜想可能是请求被 win 系统拦截了,或者是权限问题,随后我找到 adb,右键属性 - 先是 - 勾选'完全控制',加了所有的权限,再运行扔不起作用,
    后来看到里面有个兼容性,我就是试着勾选上在运行~~神奇的事情发生了!!!竟然就可以了!

    原因仍就没找到~~~,大神们有兴趣可以研究一下

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年03月01日

    不是环境变量的问题,已经解决了,但原因还不知道是为什么~~

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月29日

    除了 adb devices 外,adb --version 同样也拿不到返回值,但执行 adb --help 却能拿到


  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月29日

    一样的,同样是拿不到,早就试过了

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月27日


    不行,现在就是 python 调 adb 获取返回内容不行,执行命令可执行,很诡异

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月27日

    操作执行命令都可以执行,只是没有返回值,搞得我头都大了

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月27日

    是一个,我电脑只有这一个 adb,调 adb 其它操作都正常,唯独 调设备信息类的都没有返回值

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月26日

    一样,不管用

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月26日

    不起作用,它并没有报错,只是返回内容是空的

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月26日

    不行

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月26日

    我刚找 it 格式化了 c 盘重装系统都不行~~~,,真屌了

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月26日

    试过了,还是一样

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月26日

    没用,重启过 N 次了,adb 和 python 我都重装过好几次了,都不行

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月26日

    这样拿到的是一个空列表
    ,

    我这执行 adb 其他命令都正常,但就获取设备信息类的命令,全部拿不到返回值,os.ponen 啥的命令也是一样的情况,,查了两天了也没定位到原因

    哦对了,执行 version 也不行
    list(os.popen('adb --version').readlines())
    []

  • python 调用 adb 设备命令返回值为空,求大神们帮忙分析一下 at 2021年01月26日

    不管用,还是空的

关于 / 活跃用户 / 中国移动互联网测试技术大会 / 反馈 / Github / API / 帮助推广
TesterHome社区,测试之家,由众多测试工程师组织和维护的技术社区,致力于帮助新人成长,提高测试地位,推进质量发展。Inspired by RubyChina
友情链接 WeTest腾讯质量开放平台 / InfoQ / 掘金 / SegmentFault / 测试窝 / 百度测试吧 / IT大咖说
简体中文 / 正體中文 / English

©testerhome.com 测试之家   渝ICP备2022001292号
  渝公网安备 50022202000435号    版权所有 © 重庆年云聚力信息技术有限公司