目录

1 什么事手机app自动化,作用和特点

2 自动化原理:

3 定位元素

根据ID

根据CLASS NAME

根据ACCESSIBILITY ID

Xpath


1 什么事手机app自动化,作用和特点

Appium 是一个移动 App (手机应用)自动化工具。

手机APP 自动化有什么用?

  • 自动化完成一些重复性的任务(比如微信客服机器人)

  • 爬虫(就是通过手机自动化爬取信息。)

  • 自动化测试(很多企业里面有这样的需求)

Appium 自动化方案的特点:

  • 开源免费

  • 支持多个平台 IOS (苹果)、安卓 App 的自动化都支持。

  • 支持多种类型的自动化

    支持 苹果、安卓 应用 原生界面 的自动化

    支持 应用 内嵌 WebView 的自动化

    支持 手机浏览器 中的 web网站自动化

    支持 flutter 应用的自动化

  • 支持多种编程语言

    像 Selenium 一样, 可以用多种编程语言 调用它 开发自动化程序。

2 自动化原理:

我们先来看一下Appium自动化的原理图:

和Selenium 原理图很像。因为 Appium自动化架构就是借鉴的Selenium。

这幅图, 包含了 3个主体部分 : 自动化程序、Appium Server、移动设备

  • 自动化程序

    自动化程序是由我们来开发的,实现具体的 手机自动化 功能。

    要发出具体的指令控制手机,也需要使用 客户端库

    和Selenium一样,Appium 组织 也提供了多种编程语言的客户端库,包括 java,python,js, ruby等,方便不同编程语言的开发者使用。

    我们需要安装好客户端库,调用这些库,就可以发出自动化指令给手机。

  • Appium Server

Appium Server 是 Appium 组织开发的程序,它负责管理手机自动化环境,并且转发 自动化程序的控制指令 给 手机,并且转发 手机给 自动化程序的响应消息。

  • 手机设备

    我们这里说的手机设备,其实不仅仅是手机,包括所有 苹果、安卓的移动设备,比如:手机、平板、智能手表等,简称: 手机

    当然手机上也包含了 我们要自动化控制的 手机应用APP。

    手机设备为什么能 接收并且处理自动化指令呢?

    因为,Appium Server 会在手机上 安装一个 自动化代理程序, 代理程序会等待自动化指令,并且执行自动化指令

比如:要模拟用户点击界面按钮,Appium 自动化系统的流程是这样的:

  • 自动化程序 调用客户端库相应的函数, 发送 点击元素 的指令(封装在HTTP消息里)给 Appium Server

  • Appium Server 再转发这个指令给 手机上的自动化代理

  • 手机上的自动化代理 接收到 指令后,调用手机平台的自动化库,执行点击操作,返回点击成功的结果给 Appium Server

  • Appium Server 转发给 自动化程序

  • 自动化程序了解到本操作成功后,继续后面的自动化流程

其中,自动化代理控制,使用的什么库来实现自动化的呢?

如果测试的是苹果手机, 用的是苹果的 XCUITest 框架 (IOS9.3版本以后)

如果测试的是安卓手机,用的是安卓的 UIAutomator 框架 (Android4.2以后)

这些自动化框架提供了在手机设备上运行的库,可以让程序调用这些库,像人一样自动化操控设备和APP,比如:点击、滑动,模拟各种按键消息等

3 定位元素

Appium是基于Selenium的,所以 和 Selenium 代码 定位元素的 基本规则相同:

  • find_element_by_XXX 方法,返回符合条件的第一个元素,找不到抛出异常

  • find_elements_by_XXX 方法,返回符合条件的所有元素的列表,找不到返回空列表

  • 通过 WebDriver 对象调用这样的方法,查找范围是整个界面

  • 通过 WebElement 对象调用这样的方法,查找范围是该节点的子节点

根据ID

在Selenium Web自动化教程里,我们说过,如果能根据ID选择定位元素,最好根据ID,因为通常来说ID是唯一的,所以根据ID选择 效率高。

在安卓应用自动化的时候,同样可以根据ID查找。

但是这个ID ,是安卓应用元素的 resource-id 属性

使用如下代码

from appium.webdriver.common.appiumby import AppiumBydriver.find_element(AppiumBy.ID, 'expand_search')

根据CLASS NAME

安卓界面元素的 class属性 其实就是根据元素的类型,类似web里面的tagname, 所以通常不是唯一的。

通常,我们根据class 属性来选择元素, 是要选择多个而不是一个。

当然如果你确定 要查找的 界面元素的类型 在当前界面中只有一个,就可以根据class 来唯一选择。

使用如下代码

from appium.webdriver.common.appiumby import AppiumBydriver.find_element(AppiumBy.CLASS_NAME, 'android.widget.TextView')

根据ACCESSIBILITY ID

元素的 content-desc 属性是用来描述该元素的作用的。

如果要查询的界面元素有 content-desc属性,我们可以通过它来定位选择元素。

使用如下代码

from appium.webdriver.common.appiumby import AppiumBydriver.find_element(AppiumBy.ACCESSIBILITY_ID, '找人')

Xpath

Appium 也支持通过 Xpath选择元素。

但是其可靠性和性能不如 Selenium Web自动化。因为Web自动化对Xpath的支持是由浏览器实现的,而Appium Xpath的支持是 Appium Server实现的。

毕竟,浏览器产品的成熟度比Appium要高很多。

当然,Xpath是标准语法,所以这里表达式的语法规则和 以前学习的Selenium里面Xpath的语法是一样的,比如

from appium.webdriver.common.appiumby import AppiumBydriver.find_element(AppiumBy.XPATH, '//ele1/ele2[@attr="value"]')

注意:

selenium自动化中, xpath表达式中每个节点名是html的tagname。

但是在appium中, xpath表达式中 每个节点名 是元素的class属性值。

比如:要选择所有的文本节点,就使用如下代码

driver.find_element(AppiumBy.XPATH, '//android.widget.TextView')

appium手机APP自动化定位元素相关推荐

  1. python+appium手机APP自动化基础篇3-找元素定位(anroid)

    1. 定位工具 前言,在环境搭建已经安装anroid-sdk,里面就自带有元素定位的工具.找到uiautomatorviewer.bat文件,位置在D:\android-sdk-windows\too ...

  2. Appium 手机 App 自动化代码说明_启动微信app

    #coding=utf-8 from appium import webdriver desired_caps = { 'platformName': 'Android', 'platformVers ...

  3. 手机APP自动化 Appium教程

    Appium原理与安装 Appium 是一个移动 App (手机应用)自动化工具. 手机APP 自动化有什么用? 自动化完成一些重复性的任务 比如微信客服机器人 爬虫 自动化测试 Appium 自动化 ...

  4. Appium+Python appium启动夜神模拟器定位元素(三)

    ① 目的 使用appium启动夜神模拟器定位元素 ② 环境 Python+Appium+Android模拟器 ③配置启动项 1.platformName:Android //设备型号 2.platfo ...

  5. Appium移动端自动化测试之元素定位(三)

    1.name定位 driver.find_element_by_id('com.shanjian.originaldesign:id/edit_Tel').send_keys('15817252876 ...

  6. 手机APP自动化之uiautomator2 +python3 UI自动化

    题记: 之前一直用APPium直到用安卓9.0  发现uiautomatorviewer不支持安卓 9.0,点击截屏按钮 一直报错,百度很久解决方法都不可以,偶然间看见有人推荐:uiautomator ...

  7. Python+Appium自动化测试-通过坐标定位元素

    在使用appium做app自动化测试的过程中,可能会遇到元素的属性值不是唯一的情况,导致不能通过find_element_bi_xx()方法定位元素,这个时候我们就可以通过坐标来定位元素. 1,通过绝 ...

  8. 手机app自动化操作工具airtest之入门篇

    airtest自动化测试工具 airtest是网易开发的一款自动化测试工具,主要用于游戏自动化开发和测试,目前支持对windows应用.手机app等,同时支持录制操作,甚至达到无需代码编写即可完成测试 ...

  9. APP自动化测试定位元素位置

    一,ID定位方法 如下图所示,使用uiautomator2 工具定位7的位置,只需要获取此位置的resource_id 信息即可 如果有resource-id属性就取resource-id值,有id属 ...

最新文章

  1. VS2017中C++无法将参数1从const char [8] 转换为char[]
  2. 简单linux蠕虫,清除Linux系统上的蠕虫程序Ramen
  3. 2016年第七届蓝桥杯 - 国赛 - C/C++大学B组 - D. 机器人塔
  4. 登录过gnome主题后无法再登录xfce主题
  5. mysql版本 hibernate_Mysql 不同版本 说明
  6. python基础入门(5)之运算符
  7. 机器学习中基本线性代数
  8. Video和Audio标签的使用
  9. Egret 之 消除游戏 开发 PART 6 Egret elimination game development PART 6
  10. XP系统下如何把FAT32转换成NTFS格式的?
  11. 田忌赛马博弈矩阵分析
  12. [含lw+源码等]微信小程序在线考试管理系统+后台管理系统[包运行成功]
  13. 计算机count是什么函数,2010年职称计算机考试:计数函数COUNT
  14. 波特率dlm_第6讲 串行通信16550.ppt
  15. python 拼多多_python 拼多多_拼多多2018校招编程题汇总 Python实现
  16. HP Cloud Recovery Tool
  17. 前程无忧简历泄露事件再被曝光,公司理念是“不赚钱的东西不做”
  18. 思博伦Spirent TestCenter _如何使用抓包过滤功能抓取特定的帧_双极未来
  19. Ubuntu 14.04 smba服务器的配置——亲测方便可用
  20. G1垃圾回收器学习笔记

热门文章

  1. 虚拟化与网络存储技术:虚拟化技术、Qemu-KVM
  2. [C语言]扫雷游戏(Mine Sweeper)
  3. android 静音与振动
  4. RPA应用场景-交通违章查询
  5. 计算机用户administer改名后,win10系统用户文件夹改名的详细步骤
  6. UI设计中聊天气泡框的设计技巧
  7. 微信小程序:王者战力查询改名工具箱小程序源码
  8. python中notebook左侧in中_Python Pmw.NoteBook方法代码示例
  9. 拼多多如何优化产品排名位置?
  10. 百家号自媒体文章出现哪些因素会不推荐?