• 【appium】APP元素操作Api、androidDriver操作Api


    一、元素操作Api

    主要是做断言 text

    1、click()——触发当前元素的点击事件

    2、sendKeys(...)——输入数据

    3、clear()——清空内容

    4、getAttribute() ——获取属性值

    字符串类型属性:

    • content-desc(返回content-desc属性值)

    • text(返回 text)

    • className(返回 class)

    • resourceId(返回 resource-id)

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

    5、getText() =====等同于:getAttribute("text")

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

    6、getTagName()

    二、androidDriver操作Api

    1、currentActivity()

    当前正在前台运行的界面名,我们可以用此API在某些场景进行断言:是否当前activity符合我们的预期等。

    1. //得到当前正在运行的activity
    2. String activity = androidDriver.currentActivity();

    2、getPageSource()

    可以用于判断当前页面是否有某个元素,或者判断当前页面有没有产生变化:

    如:上下滚动判断是否已经到了底端/顶端;

    获取app代码源码 用来做断言 根据源码看页面有没有什么变化

    ⚠️注意是当前页面,当前看到的页面,不是全部页面

    1. //得到当前页面的结构图
    2. androidDriver.getPageSource();

    3、其他信息获取类API

    • 获取设备时间信息

      androidDriver.getDeviceTime();
    • 获取设备DPI,注意不是分辨率,屏幕密度 (Density)

      androidDriver.getDisplayDensity();
    • 获取automation name,默认为null,

      如果有指定automation name为uiautomator2就为对应的值

      androidDriver.getAutomationName();
    • 获取设备横竖屏状态,有PORTRAIT(竖屏)与LANDSCAPE(横屏)

      androidDriver.getOrientation();

    4、pressKey():KeyEvent 按键——app特有api—— pressKey()

    输入android对应的key 激活对应的功能 包括:声音大小、相机、开关机、返回键等等

    安卓对应的键:Android KeyCode 安卓键码对照表-CSDN博客

    1. KeyEvent key = new KeyEvent();
    2. key.withKey(AndroidKey.BACK);
    3. driver.pressKey(key);

    5、getScreenshotAs() 截图

    1. //手机截图文件
    2. //file对象存在一个临时目录,srcFile
    3. File srcFile = driver.getScreenshotAs(OutputType.FILE);
    4. FileUtils.copyFile(srcFile,new File("/.../android.png"));

    6、坐标点击 TouchAction

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

    注意:坐标点击受设备屏幕尺寸/分辨率/DPI影响,万不得已不要使用此种方式
    缺点:兼容性差 更换设备后一般不能用
    实现方式:(类似于web的拖动:press——release——perform)
    1. TouchAction action = new TouchAction(driver);
    2. //创建坐标点击对象PointOption
    3. //创建点 x y ⚠️左上角是原点
    4. PointOption point = PointOption.point(493,837);
    5. //点击
    6. action.press(point).release().perform();

  • 相关阅读:
    一个高精度24位ADC芯片ADS1222的使用方法及参考电路程序成都控制器定制
    常用的消息协议
    【架构师】的修炼之道都需要学习哪些?看看这些就够了
    【Spring】一个spring简单实例
    (附源码)springboot某高校绩效考核管理 毕业设计 012208
    环形缓冲区-----适合在通信中接收数据(例如uart)
    榜一的蔑视!阿里专家手写Spring全家桶笔记,整2000页
    开源大数据集群部署(十四)Ranger集成Hbase
    【招银网络科技java面试题目面试经验】-看准网
    2023 年 Bitget Wallet 测评
  • 原文地址:https://blog.csdn.net/weixin_40772077/article/details/136329322