解决appium 连接真机Android 9启动报错.....shell "ps 'uiautomator'

好久没有使用Appium了,感觉要从头开始了,正好换个电脑要重新装环境,装环境就不描述了,照着网上的资料就可以了,问题就出现在连接真机,手机是Android9,vivoZ5x,启动APP时候始终报错,提示....shell "ps ‘uiautomator‘。

网上搜了很多,但是如下的解决版本亲测有效。

在appium的安装目录,找到该目录下C:\soft\Appium\node_modules\appium\node_modules\appium-adb\lib的 adb.js 文件

1.找到这段代码:

ADB.prototype.shell = function (cmd, cb) {
  if (cmd.indexOf(‘"‘) === -1) {
    cmd = ‘"‘ + cmd + ‘"‘;
  }
  var execCmd = ‘shell ‘ + cmd;
  this.exec(execCmd, cb);
};

2.在这段代码后面加上如下:

ADB.prototype.shell_grep = function (cmd, grep, cb) {
  if (cmd.indexOf(‘"‘) === -1) {
    cmd = ‘"‘ + cmd + ‘"‘;
  }
  var execCmd = ‘shell ‘ + cmd + ‘| grep ‘ + grep;
  this.exec(execCmd, cb);
};

3.注释如下代码:

ADB.prototype.getPIDsByName = function (name, cb) {
  logger.debug("Getting all processes with ‘" + name + "‘");
  this.shell("ps ‘" + name + "‘", function (err, stdout) {
    if (err) return cb(err);
    stdout = stdout.trim();
    var procs = [];
    var outlines = stdout.split("\n");
    outlines.shift();
    _.each(outlines, function (outline) {
      if (outline.indexOf(name) !== -1) {
        procs.push(outline);
      }
    });
    if (procs.length < 1) {
      logger.debug("No matching processes found");
      return cb(null, []);
    }
    var pids = [];
    _.each(procs, function (proc) {
      var match = /[^\t ]+[\t ]+([0-9]+)/.exec(proc);
      if (match) {
        pids.push(parseInt(match[1], 10));
      }
    });
    if (pids.length !== procs.length) {
      var msg = "Could not extract PIDs from ps output. PIDS: " +
                JSON.stringify(pids) + ", Procs: " + JSON.stringify(procs);
      return cb(new Error(msg));
    }
    cb(null, pids);
  });
};

4.增加下列代码:

ADB.prototype.getPIDsByName = function (name, cb) {
  logger.debug("Getting all processes with ‘" + name + "‘");
  this.shell_grep("ps", name, function (err, stdout) {
    if (err) {
      logger.debug("No matching processes found");
      return cb(null, []);
    }
    var pids = [];
    _.each(procs, function (proc) {
    var match = /[^\t ]+[\t ]+([0-9]+)/.exec(proc);
    if (match) {
    pids.push(parseInt(match[1], 10));
    }
    });
    if (pids.length !== procs.length) {
      var msg = "Could not extract PIDs from ps output. PIDS: " +
      JSON.stringify(pids) + ", Procs: " + JSON.stringify(procs);
      return cb(new Error(msg));
    }
    cb(null, pids);
  });
};

5.重启APPIUM即可,Android9就可以运行了

解决appium 连接真机Android 9启动报错.....shell "ps 'uiautomator'

原文地址:https://www.cnblogs.com/zynzyf/p/12218360.html

时间: 2024-10-10 07:43:32

解决appium 连接真机Android 9启动报错.....shell "ps 'uiautomator'的相关文章

iOS 真机测试的时候报错 After modifying system headers, please delete the module cache at &#39;/ /Users/smile/Libr

这个是Xcode缓存导致的 fatal error: file ' '/ /Users/smile/Library/Developer/Xcode/DerivedData/ModuleCache/VE5HTVL861UA' was built note: after modifying system headers, please delete the module cache at '/Users/ligang/Library/Developer/Xcode/DerivedData/Modul

Appium 小白从零安装 ,Appium连接真机测试。

Appium安装过程 先安装了 Node.js.在node的官网上下载的exe安装文件. 在node的command line中执行 npm install -g appium 来安装appium,报错,无效. 去appium.io官网,下载的appium的压缩包.其实这个压缩包中已经含有appium的可执行文件,无需再单独配置Node.js了. 解压之后出现appium.exe,双击运行提示需要安装.Net Framework,点击 “是” 便可以立即下载. 下载成功后,再次运行appium.

APPium连接真机输入框中输入的内容与代码中不一致

今天解决了上一个问题,又碰到了一个新的问题. 问题:连接真机输入框中输入的内容与代码中不一致. 描述: 想实现登录页面输入用户名和密码自动登录,可是在输入用户名和密码的框中输入的内容总是与代码中的不一致,初步感觉到应该和输入发有关系,于是把用户名和密码都换成数字可以成功登录,但是真实的用户名很有可能含有字母,所以继续学习实践.把手机默认输入法换成英文的,再运行一次代码,用户名"clinvab001"可以正常输入,但是密码输入又出了问题,在网上各种寻找,几经实践终于找到了解决的办法了,在

Appium——连接真机,adb devices获取不到设备号

连接真机后,使用 adb devices获取不到设备号. 1.检查usb接口是否正常,是否正常链接到电脑 2.手机开发者模式是否开启,usb调试是否开启 3.检查驱动是否正常 4.如果驱动显示黄叹号,或者adb devices没有设备号,就用驱动精灵检查驱动,更新下驱动 再次查看,正常

mac上使用appium连接真机问题

1.链接真机时一直报错 app is not install 日志如下: 解决办法:是因为lockdown挂了,在命令行输入sudo chmod -R 777 /var/db/lockdown/ 但是又出现个问题如下: 解决办法:使用xcode7 启动时需要先使用Xcode的automation,去保存一份模板.但是Xcode8将automation从Xcode->Open Developer Tool->Instrument中去掉了.所以要从Xcode8切换回Xcode7

解决Android AVD启动报错问题

好不容易从ADT Bundle转为Android Studio的开发环境,一路荆棘,现在又遇到了模拟器的问题,本来直接用真机调试程序会更快些,但是为了模拟多种系统不得不开启AVD. 废话不说,问题和解决方法如下: 1. 默认AVD产生的镜像与配置文件目录一般都在 %WinDIR%/Users/xxx/.android/avd 下, 而我在装AS(Android Studio,以下都用AS代替),其AVD路径已经移到了Android SDK的目录下,比如d:/android/sdk/.androi

解决Android studio 启动报错java.lang.RuntimeException: java.lang.IllegalArgumentException

报错内容 Internal error. Please report to https://code.google.com/p/android/issues java.lang.RuntimeException: java.lang.IllegalArgumentException: Argument for @NotNull parameter 'name' of com/android/tools/idea/welcome/Platform.<init> must not be null 

iOS 真机测试的一些报错

1.连了手机热点 fix Issue后出现提示框:No Devices Registered:Creating a provisioning profile requires one or more devices to be registered with your team.  Connect a device to your Mac to add it to your team. 公司内网各种限制 以为是网络问题又试着改了bundle id发现并不是,原来Xcode左上角设备那一项没选中自

WDS+MDT使用记录---客户机UEFI模式启动报错

问题:客户机使用Legacy 模式启动正常,但使用UEFI模式启动时报错(NBP filesize is 0 Bytes)环境:server 2016 x64安装了WDS+MDT6.3.8456+ADK windows10; DHCP安装在域控上面解决办法:由于MDT的DeploymentShare\Boot\x64启动路径下缺少文件wdsmgfw.efi,找到MDTserver上的wdsmgfw.efi文件(C:\Windows\System32\RemInst\boot\x64),复制到De