官网:http://appium.io/ github:https://github.com/appium/appium Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android, and Windows apps using the WebDriver protocol.
第三方自动化工具,扩充了Selenium WebDriver协议,在原有的基础上添加了移动端测试API
是一个开源的,跨平台的自动化测试工具,可以用于app的自动化测试
支持android
,ios
,firefox os
等操作系统下的app测试
Appium的核心,实质上是一个web接口服务器,使用node.js实现
Appium Desktop前身,已经停止维护,封装的Appium Server 是1.4.16
Appium GUI
内嵌了 Appium Server,提供GUI界面,还包括其他工具的整合(如Appium Inspector)
客户端向Appium Server发起请求,可以用不同语言来实现
例如java:https://github.com/appium/java-client
配置Android sdk环境
在mac上安装:
$ brew cask install android-platform-tools
$ echo 'export PATH=$PATH:~/.android-sdk-macosx/platform-tools/' >> ~/.bash_profile
$ source ~/.bash_profile
检查一下是否安装完成:
$ adb version
检查环境
https://www.yeshen.com/
模拟器
https://github.com/appium/appium-desktop/releases/tag/v1.18.0-2
Appium 桌面版
启动
https://mvnrepository.com/artifact/io.appium/java-client
使用adb connect 127.0.0.1:62001
连接设备
其中62001
是夜神模拟器的端口
连接设备
$ aapt dump badging xxxx
$ aapt dump badging /Users/zhongxin/Downloads/app自动化工具包/APK包/lemonban_release_v2.1.2_finally.apk
$ /Applications/NoxAppPlayer.app/Contents/MacOS/aapt dump badging /Users/zhongxin/Downloads/app自动化工具包/APK包/lemonban_release_v2.1.2_finally.apk
package: name='com.lemon.lemonban' versionCode='20181113' versionName='2.1.2' platformBuildVersionName='7.1.1'
sdkVersion:'15'
targetSdkVersion:'25'
uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.WRITE_EXTERNAL_STORAGE'
uses-permission: name='android.permission.READ_EXTERNAL_STORAGE'
uses-permission: name='android.permission.CAMERA'
uses-permission: name='android.permission.INTERNET'
uses-permission: name='android.permission.READ_PHONE_STATE'
uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
uses-permission: name='android.permission.CHANGE_WIFI_STATE'
uses-permission: name='android.permission.ACCESS_WIFI_STATE'
uses-permission: name='android.permission.WAKE_LOCK'
uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
uses-permission: name='android.permission.WRITE_EXTERNAL_STORAGE'
uses-permission: name='android.permission.VIBRATE'
uses-permission: name='android.permission.GET_TASKS'
uses-permission: name='android.permission.BLUETOOTH'
uses-permission: name='android.permission.BLUETOOTH_ADMIN'
uses-permission: name='android.permission.ACCESS_FINE_LOCATION'
uses-permission: name='android.permission.ACCESS_COARSE_LOCATION'
uses-permission: name='android.permission.SYSTEM_ALERT_WINDOW'
uses-permission: name='getui.permission.GetuiService.com.lemon.lemonban'
uses-permission: name='android.permission.MOUNT_UNMOUNT_FILESYSTEMS'
application-label:'柠檬班'
application-label-af:'柠檬班'
application-label-am:'柠檬班'
application-label-ar:'柠檬班'
application-label-az-AZ:'柠檬班'
application-label-be-BY:'柠檬班'
application-label-bg:'柠檬班'
application-label-bn-BD:'柠檬班'
application-label-bs-BA:'柠檬班'
application-label-ca:'柠檬班'
application-label-cs:'柠檬班'
application-label-da:'柠檬班'
application-label-de:'柠檬班'
application-label-el:'柠檬班'
application-label-en-AU:'柠檬班'
application-label-en-GB:'柠檬班'
application-label-en-IN:'柠檬班'
application-label-es:'柠檬班'
application-label-es-US:'柠檬班'
application-label-et-EE:'柠檬班'
application-label-eu-ES:'柠檬班'
application-label-fa:'柠檬班'
application-label-fi:'柠檬班'
application-label-fr:'柠檬班'
application-label-fr-CA:'柠檬班'
application-label-gl-ES:'柠檬班'
application-label-gu-IN:'柠檬班'
application-label-hi:'柠檬班'
application-label-hr:'柠檬班'
application-label-hu:'柠檬班'
application-label-hy-AM:'柠檬班'
application-label-in:'柠檬班'
application-label-is-IS:'柠檬班'
application-label-it:'柠檬班'
application-label-iw:'柠檬班'
application-label-ja:'柠檬班'
application-label-ka-GE:'柠檬班'
application-label-kk-KZ:'柠檬班'
application-label-km-KH:'柠檬班'
application-label-kn-IN:'柠檬班'
application-label-ko:'柠檬班'
application-label-ky-KG:'柠檬班'
application-label-lo-LA:'柠檬班'
application-label-lt:'柠檬班'
application-label-lv:'柠檬班'
application-label-mk-MK:'柠檬班'
application-label-ml-IN:'柠檬班'
application-label-mn-MN:'柠檬班'
application-label-mr-IN:'柠檬班'
application-label-ms-MY:'柠檬班'
application-label-my-MM:'柠檬班'
application-label-nb:'柠檬班'
application-label-ne-NP:'柠檬班'
application-label-nl:'柠檬班'
application-label-pa-IN:'柠檬班'
application-label-pl:'柠檬班'
application-label-pt:'柠檬班'
application-label-pt-BR:'柠檬班'
application-label-pt-PT:'柠檬班'
application-label-ro:'柠檬班'
application-label-ru:'柠檬班'
application-label-si-LK:'柠檬班'
application-label-sk:'柠檬班'
application-label-sl:'柠檬班'
application-label-sq-AL:'柠檬班'
application-label-sr:'柠檬班'
application-label-sr-Latn:'柠檬班'
application-label-sv:'柠檬班'
application-label-sw:'柠檬班'
application-label-ta-IN:'柠檬班'
application-label-te-IN:'柠檬班'
application-label-th:'柠檬班'
application-label-tl:'柠檬班'
application-label-tr:'柠檬班'
application-label-uk:'柠檬班'
application-label-ur-PK:'柠檬班'
application-label-uz-UZ:'柠檬班'
application-label-vi:'柠檬班'
application-label-zh:'柠檬班'
application-label-zh-CN:'柠檬班'
application-label-zh-HK:'柠檬班'
application-label-zh-TW:'柠檬班'
application-label-zu:'柠檬班'
application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
application: label='柠檬班' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
launchable-activity: name='com.lemon.lemonban.activity.WelcomeActivity' label='' icon=''
feature-group: label=''
uses-feature: name='android.hardware.bluetooth'
uses-implied-feature: name='android.hardware.bluetooth' reason='requested android.permission.BLUETOOTH permission, requested android.permission.BLUETOOTH_ADMIN permission, and targetSdkVersion > 4'
uses-feature: name='android.hardware.camera'
uses-implied-feature: name='android.hardware.camera' reason='requested android.permission.CAMERA permission'
uses-feature: name='android.hardware.faketouch'
uses-implied-feature: name='android.hardware.faketouch' reason='default feature for all apps'
uses-feature: name='android.hardware.location'
uses-implied-feature: name='android.hardware.location' reason='requested android.permission.ACCESS_COARSE_LOCATION permission, and requested android.permission.ACCESS_FINE_LOCATION permission'
uses-feature: name='android.hardware.screen.portrait'
uses-implied-feature: name='android.hardware.screen.portrait' reason='one or more activities have specified a portrait orientation'
uses-feature: name='android.hardware.wifi'
uses-implied-feature: name='android.hardware.wifi' reason='requested android.permission.ACCESS_WIFI_STATE permission, and requested android.permission.CHANGE_WIFI_STATE permission'
main
other-activities
other-receivers
other-services
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'
locales: '--_--' 'af' 'am' 'ar' 'az-AZ' 'be-BY' 'bg' 'bn-BD' 'bs-BA' 'ca' 'cs' 'da' 'de' 'el' 'en-AU' 'en-GB' 'en-IN' 'es' 'es-US' 'et-EE' 'eu-ES' 'fa' 'fi' 'fr' 'fr-CA' 'gl-ES' 'gu-IN' 'hi' 'hr' 'hu' 'hy-AM' 'in' 'is-IS' 'it' 'iw' 'ja' 'ka-GE' 'kk-KZ' 'km-KH' 'kn-IN' 'ko' 'ky-KG' 'lo-LA' 'lt' 'lv' 'mk-MK' 'ml-IN' 'mn-MN' 'mr-IN' 'ms-MY' 'my-MM' 'nb' 'ne-NP' 'nl' 'pa-IN' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'si-LK' 'sk' 'sl' 'sq-AL' 'sr' 'sr-Latn' 'sv' 'sw' 'ta-IN' 'te-IN' 'th' 'tl' 'tr' 'uk' 'ur-PK' 'uz-UZ' 'vi' 'zh' 'zh-CN' 'zh-HK' 'zh-TW' 'zu'
densities: '120' '160' '240' '320' '480' '640' '65534'
(base) zhongxindeMacBook-Pro:~ zhongxin$
package com.zhongxin.demo;
import org.openqa.selenium.remote.DesiredCapabilities;
public class AppDemo {
public static void main(String[] args) {
//配置设备信息
DesiredCapabilities capabilities = new DesiredCapabilities();
//1.设备平台
capabilities.setCapability("platformName", "Android");
//2.设备名称
capabilities.setCapability("deviceName", "127.0.0.1:62001");
//3.APP包名
capabilities.setCapability("appPackage", "com.lemon.lemonban");
//4.App activity名称
capabilities.setCapability("appActivity", "com.lemon.lemonban.activity.WelcomeActivity");
}
}