一、App前端基础知识

1.App类型划分

image.png

2.App类型对比

应用类型 优点 缺点
Native 直接依托于操作系统、交互性强、性能最好、功能最为强大 开发成本高、无法跨平台、更新缓慢、审核周期慢、维护成本高
web 开发成本低、可以跨平台调试方便、更新无需通知用户、不需要手动升级、无需安装App、不会占用手机存储空间 无法获取系统级别的通知、提醒、动效等等、用户留存率低、体验较差、涉及受限制诸多
Hybrid 开发成本低、可以跨平台调试方便、维护成本低、功能可复用、性能和体验要不web app好更新较自由 相比原生、性能仍然有较大损耗、不适用于交互性强的app

3.App页面元素

分为布局和控件两种

    常见布局:

        FrameLayout:框架布局

        LinearLayout:线性布局

        AbsoluteLayout:绝对布局

        RelativeLayout:相对布局

        TableLayout:表格布局

    常见控件:Button、ImageView、EditText、TextView…

二、App元素定位

1.id定位

id定位通过resource-id属性,有可能出现一个页面会有多个相同的resource-id值

androidDriver.findElement(MobileBy.id("xxx")).click();

2.text定位

androidDriver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().text(\"xxxx\")"));

3.className定位(一般定位元素比较多,不推荐使用)

androidDriver.findElement(MobileBy.className("xxx"));

4.accessibility id定位

在UIAutomatorViewer并没有此属性,对应是content-desc属性

androidDriver.findElement(MobileBy.AccessibilityId(\"xxx\"));

5.xpath定位

App和web通用,此处不再介绍了

三、元素操作API

click():触发当前元素的点击事件

sendKeys():输入数据

clear():清空内容

getAttribute():得到clss属性

    字符串类型属性:

            content-desc:返回content-desc属性值

            text:返回text

            className:返回class

            resourceId:返回resource-id

    布尔类型属性同UiautomatorViewer里面保持一致

getText():获取当前元素的文本值(文本属性值)

四、androidDriver操作API

1.currentActivity()

当前正在前台运行的页面名,可以进行断言

//得到当前正在运行的activity
String activity = driver.currentActivity();
System.out.println(activity);

2.getPageSource()

用于判断当前页面是否有某个元素或者页面有没有产生变化:如滚动判断是否已经到底端/顶端

driver.getPageSource();

3.其他信息获取类API

//获取设备时间信息
driver.getDeviceTime();
//获取设备DPI,注意不是分辨率
driver.getDisplayDensity();
//获取automation name,默认为null,如果有指定automation name为uiautomator2就为对应的值
driver.getAutomationName();
//获取设备横竖屏状态,有PORTRAIT(竖屏)与LANDSCAPE(横屏)
driver.getOrientation();

4.pressKey()

//按键操作
KeyEvent keyEvent = new KeyEvent();
//点击返回按钮
keyEvent.withKey(AndroidKey.BACK);
driver.pressKey(keyEvent);

5.getScreenshotAs()

//截图
File file = driver.getScreenshotAs(OutputType.FILE);
try {
    FileUtils.copyFile(file,new File("C:\\Users\\86182\\Desktop\\test.png"));
} catch (IOException e) {
    e.printStackTrace();
}

6.坐标点击

选择设置中关于手机->连续点击五次版本号->进入开发者选项->指针位置进行勾选

注意:坐标受屏幕尺寸、分辨率、DPI影响,一般情况不推荐使用此种方式

//坐标点击
TouchAction touchAction = new TouchAction(driver);
//转化坐标
PointOption pointOption = PointOption.point(123,234);
touchAction.press(pointOption).release().perform();

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注