基本工作流程如下:
原理图:

两个端口:
1、启动appium server;
2、init driver;
DesiredCapabilities设置:app、device、platformName、deviceName、udid、超时等
3、用例执行:模拟用户进行UI操作;
4、测试完成:
1. 卸载app:removeapp  
2. driver退出:driver.quit()
Appium元素定位方式依赖于Selenium,因此,Selenium的定位方式,Appium都支持,也支持Android和iOS原生的定位方式。
元素定位方法:
| 方法 | 含义 | 
|---|---|
| findElementById | 元素的ID属性 | 
| findElementsByName | 元素的name属性 | 
| findElementByTagName | 元素的标签名 | 
| findElementsByClassName | 元素的class属性 | 
| findElementByCssSelector | Selenium最强大的定位方法,比xpath速度快,但比xpath难上手 | 
| findElementByXPath | 什么是Xpath | 
| findElementByCssSelector | Selenium 最强大的定位方法,比 xpath 速度快,但比 xpath 难上手 | 
| findElementsByLinkText | 链接元素的全部显示文字 | 
| findElementByPartialLinkText | 链接元素的部分显示文字 | 
| AccessibilityId | Appium中用于替代name定位方式,Android-主要使用元素的content-desc属性;iOS-使用元素的label或name | 
| findElementByAndroidUIAutomator(new UiSelector().text(text)) | 通过文本查找 | 
Android常用方法:id、className、xpath、AndroidUIAutomator、AccessibilityId.
index(int index)
text(String text)
resourceId(String id)
className(String className)
packageName(String packageName)
description(String desc)
checked(boolean val)
clickable(boolean val)
enabled(boolean val)
longClickable(boolean val)
password(boolean val)
selected(boolean val)
instance(int val)
特点:元素的所有属性都可以用做定位,功能非常强大且速度很快。
1.使用绝对路径
 driver.findElementByXPath("className/className/className/className");
2.使用相对路径
 driver.findElementByXPath("//className");
3.使用元素的索引
 driver.findElementByXPath("//className[index]");
4.通过元素的属性定位
 driver.findElementByXPath("//className[@label='XXX'][@isVisible='1']");
            //元素操作
            webElement.click();
            webElement.sendkeys();
        
            //文件传输
            driver.pushFile(remotePath, file);
            driver.pullFile(remotePath);
    
            //启动activity
            driver.startActivity(activity);
            
            //APP操作
            driver.installApp(appPath);
            driver.resetApp();
            driver.launchApp();
            driver.closeApp();
            driver.removeApp(bundleId);
Assert.assertTrue(boolean);
Assert.assertFalse(boolean);
Assert.assertSame(expected, actual);
Assert.assertEquals(expected, actual);
AndroidDriverWait:等待XXX元素出现
原理参考:https://blog.csdn.net/jffhy2017/article/details/69220719
原文:https://www.cnblogs.com/amyzhu/p/9280790.html