adb命令
adb devices:当前设备
adb shell:直接进入模拟器内部
adb install -r <下载地址>:安装软件
找到app入口:adb logcat | grep -i displayed
com.xueqiu.android/.view.WelcomeActivityAlias

根据入口启动app:adb shell am start -W -n <app入口> -S

录制case
1、Appium中输入 app基本信息,点击 start Session

2、录制

3、进行点击、输入等操作,在对应的Recorder中可以生成代码

4、点击 键头所指的按钮,可以生成完整的可以运行的代码

5、复制代码并运行
如果报错,可能需要加个隐式等待时间 :
driver.implicitly_wait(10)

启动appium并记录日志:appium -g /tmp/appium.log

元素定位:
通过id、xpath定位,如果id定位元素多,那么需要用xpath进行定位,xpath最好用 相对定位,别用 绝对定位,一般都用xpath定位
如果控件有 content-desc属性的话,可以用Accessibility_id定位,见下方代码


为什么不通过Name、Class Name定位?安卓没有Name,Class Name只有几类,定位不准确
使用 uiautomatorviewer,可以进行安卓控件定位(appium desktop也可以)
和appium desktop相比,更快、不需要初始化的各种操作(具体操作见 “录制case”第一步)
点击第二个按钮可以获取 当前界面,第三个按钮 可以获取到 “去掉无用代码”的界面,更快一些

获取元素属性:get_attribute(),可用作断言
注意单词拼写,这是规则
public enum Attribute {
CHECKABLE(new String[]{"checkable"}),
CHECKED(new String[]{"checked"}),
CLASS(new String[]{"class", "className"}),
CLICKABLE(new String[]{"clickable"}),
CONTENT_DESC(new String[]{"content-desc", "contentDescription"}),
ENABLED(new String[]{"enabled"}),
FOCUSABLE(new String[]{"focusable"}),
FOCUSED(new String[]{"focused"}),
LONG_CLICKABLE(new String[]{"long-clickable", "longClickable"}),
PACKAGE(new String[]{"package"}),
PASSWORD(new String[]{"password"}),
RESOURCE_ID(new String[]{"resource-id", "resourceId"}),
SCROLLABLE(new String[]{"scrollable"}),
SELECTION_START(new String[]{"selection-start"}),
SELECTION_END(new String[]{"selection-end"}),
SELECTED(new String[]{"selected"}),
TEXT(new String[]{"text", "name"}),
// The main difference of this attribute from the preceding one is that
// it does not replace null values with empty strings
ORIGINAL_TEXT(new String[]{"original-text"}, false, false),
BOUNDS(new String[]{"bounds"}),
INDEX(new String[]{"index"}, false, true),
DISPLAYED(new String[]{"displayed"}),
CONTENT_SIZE(new String[]{"contentSize"}, true, false);
}
toast弹窗测试
只能用uiautomator2,必须使用xpath查找 ,推荐第一种
//*[@class='android.widget.Toast']
//*[contains(@text, 'xxxx')]
appium底层 抓到toast会创建一个模拟节点,这个节点的类名=包名
MobileBy继承了By的区别:
MobileBy继承了By,额外封装一层,多了 客户端定位方法

android上的webview测试
安卓不同系统的webview定位符可能不同
android想要测试app 中的webview页面,有两种方法:
1、需要用安卓6.0系统的模拟机(网易mumu不支持,建议使用android studio)进行测试,其他系统不支持
2、使用真机测试的话,需要按章debug包,debug包 一般都打开了调试webview的开关
capability语法
待补充
数据驱动
pyyaml地址:http://pyyaml.org.wiki/
用PO后,其实不用数据驱动就可以,但是之后如果做平台的话,还是要做数据驱动的
散谈
1、class有 EditText的输入框才可以输入

2、app source:类似 触屏的 DOM,都是这个界面的 控件结构
