Android
一、连接设备
数据线连接android设备到电脑上,打开USB调试开关并进行授权,adb devices命令验证设备成功连接。
二、启动appium服务
如果是桌面版appium:
点击start server启动即可;
命令行版appium:
nohup appium -p 4725 -U 4b72ec30 --session-override --allow-insecure=adb_shell > appium_a32a6a4e.log &
nohup是后台运行,- U后面跟着设备序列号,可用adb devices命令查看。
三、appium与设备进行连接
desired_caps = {
'platformName': 'Android',
'platformVersion': '11',
'deviceName': '4b72ec30 ',#不会进行校验,但是没有会报错
'appActivity': 'com.autonavi.map.activity.NewMapActivity',#app的启动页面
'appPackage': 'com.autonavi.minimap'
}
self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
iOS
一、数据线连接手机到电脑
输入密码信任电脑
二、启动appium服务
如果是桌面版appium:
点击start server启动即可;
命令行版appium:
"start /b appium --session-override -a " + address + " -p " + Appium_port+" --webdriveragent-port “+webdriveragent_port
webdriveragent_port:与iOS客户端交互的webdriveragent的端口号,默认8010
三、Xcode编译运行wda
(1) 设置【WebDriverAgentLib】、【WebDriverAgentRunner】、【IntegrationApp】的Team,选择自己登录的Apple ID,登录Apple ID:(左上角Xcode-》Preferrence-》点击下面的进行增删)
(2)设置【WebDriverAgentRunner】、【IntegrationApp】Build Settings下Packaging目录下Product Bundle Identifier的id,把其中facebook改掉就行,自己随意改
(3) 设置【Product】→【Scheme】选择【WebDriverAgentRunner】
(4) 选中自己连接的设备,command + u 运行即可
(5) 第一次运行需要在真机设置里面给证书设置信任【设置】→【通用】→【描述文件与设备管理】选择开发者APP下面刚安装的WebDriverAgent信任即可,在次command+u即可正常运行
(6)在控制台中可以看到以下信息:
有些iphone手机通过手机的IP和端口号还不能访问,此时需要将手机的端口转发到mac上,终端运行以下命令
iproxy 8100 8100
将手机的8100端口,映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了。
网上查到说“为了持续集成”,使用如下方法,在代码中启动wda,不需要在xcode启动。
desiredCapabilities.setCapability("useNewWDA", true);
在命令行下执行iproxy 8100 8100
运行代理后,可以在浏览器打开 http://127.0.0.1:8100/status ,查看iOS设备是否能成功连接。
四、appium与设备进行连接
参数配置
desired_capabilities = {
"platformName": "ios",
"deviceName": "iPhone7P",
"platformVersion": "13.6.1",
"bundleId": "com.meituan.imeituan-beta",
"udid": "e372ee5092535ad955329aac04c450fb78b96abd"
}
获取iOS手机的udid:在finder中点击连接的设备,默认显示的是内存、电量,在此处再次点击可切换为序列号、udid,然后右键可以复制udid;
获取ipa的bundle ID,可用tidevice
tidevice applist
desired_caps = {
"platformName": "ios",
"deviceName": "iPhone7P",
"platformVersion": "13.6.1",
"bundleId": "com.meituan.imeituan-beta",
"udid": "e372ee5092535ad955329aac04c450fb78b96abd",
"clearSystemFiles": "true"
}
self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
之前运行都是好的,今天遇到一个问题:
An unknown server-side error occurred while processing the command. Original error: Could not load a driver for platformName 'ios'. Please verify your Appium installation
卸载重装appium后解决。