zoukankan      html  css  js  c++  java
  • appium在android 7.0真机上运行报错command failed shell:............ps:'uiautomator"的解决方式

    appium版本:1_4_16

    在CSDN中找到相关解决的方案,根据此解决方案顺利的解决了让人惆怅的问题,再次记录。

    1、找到appium安装目录下的adb.js文件,目录为:Appium ode_modulesappium ode_modulesappium-adblib

    2、打开adb.js,可使用notepad++编辑器等打开文件(说明:在修改代码的时候先注释掉以前的代码,并且添加自己容易识别的标记,以防出错后还有回旋的余地,或者将代码备份也可行),找到如下代码:

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

    在这段代码下面加入如下代码:

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

    再次找到如下代码:

    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("
    ");
        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 = /[^	 ]+[	 ]+([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);
      });
    };

    将以上代码注释掉,替换成如下代码:

    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 = /[^	 ]+[	 ]+([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);
      });
    };

    3、重启appium,连接手机成功运行看到解决问题已ok

  • 相关阅读:
    uva 10369 Arctic Network
    uvalive 5834 Genghis Khan The Conqueror
    uvalive 4848 Tour Belt
    uvalive 4960 Sensor Network
    codeforces 798c Mike And Gcd Problem
    codeforces 796c Bank Hacking
    codeforces 768c Jon Snow And His Favourite Number
    hdu 1114 Piggy-Bank
    poj 1276 Cash Machine
    bzoj 2423 最长公共子序列
  • 原文地址:https://www.cnblogs.com/syw20170419/p/7994482.html
Copyright © 2011-2022 走看看