一, 打开手机的USB调试模式
二, 连接手机到电脑
将手机用数据线连接到电脑,并授权USB调试模式。查看连接的效果,在cmd下运行命令:adb devices查看UDID,如下图所示:
三, 启动Appium服务
方法一:cmd命令行启动
根据查到的UDID启动appium服务,运行命令:
#>appium -a 127.0.0.1 -p 4723 –U 6207febc --no-reset
-U 参数后面跟的一串字符就是手机的UDID,这个是通过第二步查到的。
方法二:appium界面启动
四, 测试脚本的编写及运行
# -*- encoding: utf-8 -*-
'''
Created on 2018年12月01日
@author: linhuajian
'''from appium import webdriver
from appium.webdriver.connectiontype import ConnectionType
import time
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '你的安卓版本例如:8.0'
desired_caps['deviceName']="你的UDID"
#desired_caps['appPackage']='com.android.settings'
#desired_caps['appActivity'] = 'com.android.settings.HWSettings'
driver = webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
五、不重复安装 appium setting 和unlock
python 运行上面的demo 这个时候应该会提示安装appium setting 和unlock
如何避免下次运行还要安装?
解决方法:
1、需要手动去修改appium安装路径下的android.js文件,来实现运行首次安装Appium settings和Unclock,之后的运行则无需再次卸载的操作。
2、android.js的存放路径:D:\Auto Test\appium\Appium\node_modules\appium\lib\devices\android\android.js,说明:D:\Auto Test\appium\为本人的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));
};
六、appium destop 不重复安装 io.appium.uiautomator.server 和 io.appium.uiautomator.server.test
1、跳过安装 io.appium.uiautomator.server 和 io.appium.uiautomator.server.test
desired_caps ['skipServerInstallation']= True
desired_caps ['skipDeviceInitialization']= True
或者:开发者模式关闭使用adb安装应用时需要用户确认
七、高版本报错 command failed shell “ps ‘uiautomator’”
https://blog.csdn.net/qq_30353203/article/details/79555240
ios 端口代理
iproxy 8100 8100