连接:
Java
//1.添加配置,创建DesiredCapabilities对象
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
// 连接基础
//指定测试设备的名称
desiredCapabilities.setCapability("deviceName", "127.0.0.1:21523");
//添加操作系统配置
desiredCapabilities.setCapability("platformName", "Android");
//添加操作系统版本设置
desiredCapabilities.setCapability("platformVersion", "7.1.2");
//指定想要测试应用的包名
desiredCapabilities.setCapability("appPackage", "XXXX.app");
//指定想要测试应用的入口activity
desiredCapabilities.setCapability("appActivity", "XXXX");
//可选
//设备的唯一标识符,多设备运行指定
desiredCapabilities.setCapability("udid", "127.0.0.1:21523");
//找元素,如果60秒内没有找到就退出,可设定具体时间
desiredCapabilities.setCapability("newCommandTimeout", 36000);
//自动化引擎,Android :UIAutomator2 IOS : XCUITest
desiredCapabilities.setCapability("automationName", "UIAutomator2");
AndroidDriver androidDriver = new AndroidDriver(
new URL("http://127.0.0.1:4724/wd/hub"), desiredCapabilities);
Python
from appium import webdriver
import time
desired_caps = {
'platformName': 'Android', # 测试平台
'deviceName': '127.0.0.1:7555', # 设备名称---设备的ip地址
'platformVersion': '6.0.1', # 平台的版本号
'appPackage': 'com.tencent.mobileqq', # 包名
'appActivity': 'com.tencent.mobileqq.activity.SplashActivity' # 界面名
"unicodeKeyboard": 'True', # 使用appium的输入法,支持中文并隐藏键盘
"resetKeyboard": 'True' # 重置键盘输入法
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(2)
driver.quit() # 退出驱动关闭所有窗口
# driver.find_element_by_name('7').click()
# driver.find_element_by_name('+').click()
# driver.find_element_by_name('8').click()
# driver.find_element_by_name('=').click()
官方文档详情: https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
应用包名/启动项: 用ADB 命令抓取 (s: 指定一个设备的 id+端口)唯一标识符
ADB 命令
adb -s ip shell pm list packages -3
adb -s ip shell dumpsys package 包名
UI定位
方法一
Android SDK 自带的 UI Automator Viewer 工具对 Android 设备式模拟器中的控件进行定位,在 tools/bin 下,直接双击 uiautomatorviewer.bat 文件启动
方法二
用appium GUI定位 (Android不推荐)
api (Java)
```java
//定位
//根据元素的Class-Name
androidDriver.findElementByClassName();
//查询元素
androidDriver.findElement();
//根据元素的id
androidDriver.findElementById();
//根据元素的name (text)
androidDriver.findElementByName();
//根据元素的路径
androidDriver.findElementByXPath();
API 详情定位文档
文档:appium API.note
链接:http://note.youdao.com/noteshare?id=e1adcfed965b4a0420a409c9c6b3805e&sub=AA7ABE188B624490B267C78618469136
详情Api 文档 官网 https://appium.io/docs/en/about-appium/api/