appium 已解决Android,每次启动手机中都会安装Appium settings和Unclock的方法

Posted zhangzhaolin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了appium 已解决Android,每次启动手机中都会安装Appium settings和Unclock的方法相关的知识,希望对你有一定的参考价值。

环境介绍:

  1、appium版本:1.4.16.1

  2、真机运行

 

实现结果:

  运行appium第一次运行则安装Appium settings和Unclock的apk,再次之后的运行则无需手动卸载,再次安装。

 

问题描述:

  第一次:android手机运行appium,自动安装Appium settings和Unclock的apk,

  第二次:第一次运行完毕,若不手动删除已经安装的Appium settings和Unclock,将会提示报错信息如下,提示:Appium settings和Unclock不是第一次安装,因此必须每次运行appium脚本,都需要手动删除此2个apk,重新运行则不会报错。

 WebDriverException: Message: A new session could not be created. (Original error: Command failed: C:Windowssystem32cmd.exe /s /c "D:AutoTestadt-bundle-windows-x86-20140702sdkplatform-toolsadb.exe -s GWY0216A22013956 install "D:AutoTestappiumAppium
ode_modulesappiumuildsettings_apksettings_apk-debug.apk""
 Failed to install D:AutoTestappiumAppium
ode_modulesappiumuildsettings_apksettings_apk-debug.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install io.appium.settings without first uninstalling.]
)

根据以上报错信息,可以看到Appium settings和Unclock的安装路径。

 

apk作用说明:

  1、Appium settings:用于设置网络状态

  2、Unclock:用于自动解锁(使用场景:手机是滑动锁屏的情况下,则会自动解锁并启动apk,注意:图案锁屏与数字锁则不可以哦,只能是滑动锁屏)

 

解决方法:

  1、需要手动去修改appium安装路径下的android.js文件,来实现运行首次安装Appium settings和Unclock,之后的运行则无需再次卸载的操作。

  2、android.js的存放路径:D:Auto TestappiumAppium ode_modulesappiumlibdevicesandroidandroid.js,说明:D:Auto Testappium为本人的appium存放路径。

  3、android.js文件中找到如下代码

...
Android.prototype.start = function (cb, onDie) {
  this.launchCb = cb;
  this.uiautomatorExitCb = onDie;
  logger.info("Starting android appium");
  async.series([
    this.initJavaVersion.bind(this),
    this.initAdb.bind(this),
    this.packageAndLaunchActivityFromManifest.bind(this),
    this.initUiautomator.bind(this),
    this.prepareDevice.bind(this),
    this.checkApiLevel.bind(this),
    this.pushStrings.bind(this),
    this.processFromManifest.bind(this),
    this.uninstallApp.bind(this),
    this.installAppForTest.bind(this),
    this.forwardPort.bind(this),
    this.pushAppium.bind(this),
    this.initUnicode.bind(this),
    //this.pushSettingsApp.bind(this),    #手动注释此2行代码,即可解决问题
    //this.pushUnlock.bind(this),
    function (cb) {this.uiautomator.start(cb);}.bind(this),
    this.wakeUp.bind(this),
    this.unlock.bind(this),
    this.getDataDir.bind(this),
    this.setupCompressedLayoutHierarchy.bind(this),
    this.startAppUnderTest.bind(this),
    this.initAutoWebview.bind(this),
    this.setActualCapabilities.bind(this)
  ], function (err) {
    if (err) {
      this.shutdown(function () {
        this.launchCb(err);
      }.bind(this));
    } else {
      this.didLaunch = true;
      this.launchCb(null, this.proxySessionId);
    }
  }.bind(this));
};

 

欢迎加入群一起学习:

 

 

转载于:https://www.cnblogs.com/syw20170419/p/8358523.html

 

或者 :

以上是关于appium 已解决Android,每次启动手机中都会安装Appium settings和Unclock的方法的主要内容,如果未能解决你的问题,请参考以下文章

手机爬虫--appium

appuim启动报错

Appium中app的元素定位

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

appium+python自动化60-windows上同时启动多个appium服务,让多个android机器并行运行

Python+Appium学习之启动手机浏览器