Appium初识

时间:2023-01-12 10:41:31

一、 Appium工作原理

基本工作流程如下:

  1. Appium提供了一套web服务,Appium起一个Server(4723端口),用于与脚本client通信。
  2. server接收web driver(即appium client)标准请求,解析请求内容,调用对应的框架响应操作。
  3. Appium Server把请求转发给Android中设备上的间件Bootstrap.jar,Bootstrap接收appium的命令(4724端口),底层通过调用UiAutomator命令执行操作。
  4. 同时由Bootstrap将执行结果返回给appium server。

原理图:

Appium初识

两个端口:

  • 4723: appium server与自动化脚本client的通信
  • 4724: Appium server于手机设备通信

二、Appium优点

  • 跨平台
  • 跨应用
  • 跨架构:支持Native和Webview两种架构
  • 跨语言:不限制脚本编写语言
  • 其他:不依赖源码、不需要重新签名、不限制测试框架和平台(eg:TESTNG,JTEST)

三、用例编写流程

1、启动appium server;

2、init driver;

DesiredCapabilities设置:app、device、platformName、deviceName、udid、超时等

3、用例执行:模拟用户进行UI操作;

4、测试完成:

1. 卸载app:removeapp
2. driver退出:driver.quit()

四、常用API之元素定位

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.

(一)AndroidUIAutomator支持的元素定位属性

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)

特点:元素的所有属性都可以用做定位,功能非常强大且速度很快。

(二)xpath元素定位

1.使用绝对路径

 driver.findElementByXPath("className/className/className/className");

2.使用相对路径

 driver.findElementByXPath("//className");

3.使用元素的索引

 driver.findElementByXPath("//className[index]");

4.通过元素的属性定位

 driver.findElementByXPath("//className[@label='XXX'][@isVisible='1']");

五、常用API之driver支持操作

			//元素操作
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);

六、常用API之断言

Assert.assertTrue(boolean);
Assert.assertFalse(boolean);
Assert.assertSame(expected, actual);
Assert.assertEquals(expected, actual);

AndroidDriverWait:等待XXX元素出现

原理参考:https://blog.csdn.net/jffhy2017/article/details/69220719

Appium初识的更多相关文章

  1. pyadb关于python操作adb的资料

    3.最后adb命令由于是android的原生操作命令,支持实现的功能非常多.这里举几个pyapp里实现的功能例子:获取,修改手机当前使用的输入法(adb shell ime list),获取当前手机界 ...

  2. 篇2 		安卓app自动化测试-初识python调用appium

    篇2              安卓app自动化测试-初识python调用appium --lamecho辣么丑 1.1概要 大家好!我是lamecho(辣么丑),上一篇也是<安卓app自动化测 ...

  3. Appium&plus;python自动化(八)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 下(超详解)

    ​简介 通过上一篇宏哥给各位小伙伴们的引荐,大家移动对这位美女有了深刻的认识,而且她那高超的技艺和婀娜的身姿久久地浮现在你的脑海里,是不是这样呢???不要害羞直接告诉宏哥:是,就对了.宏哥要的就是这个 ...

  4. Appium&plus;python自动化(七)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 上(超详解)

    简介 “千呼万唤始出来,犹抱琵琶半遮面”,经过前边的各项准备工作,终于才把appium这位琵琶女请出来.那么下边就由宏哥给各位看官.小伙伴们和童鞋们来引荐这位美女(帅哥).这一篇主要是对前边的内容做一 ...

  5. appium封装显示等待Wait类和ExpectedCondition接口

    此文已由作者夏鹏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 使用WebDriver做Web自动化的时候,org.openqa.selenium.support.ui中提供 ...

  6. Appium移动自动化框架

    引言:Appium 是一个移动端自动化测试开源工具,可以针对不同的平台用一套API来编写测试用例.本文对Appium自动化测试框架的功能进行了概括. 本文选自<软件自动化测试开发>. Ap ...

  7. appium&plus;robotframework环境搭建

    appium+robotframework环境搭建步骤(Windows系统的appium自动化测试,只适用于测试安卓机:ios机需要在mac搭建appium环境后测试) 搭建步骤,共分为3部分: 一. ...

  8. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  9. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

随机推荐

  1. Hadoop学习笔记—11&period;MapReduce中的排序和分组

    一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出,在Step1.4也就是第四步中,需要对不同分区中的数据进行排 ...

  2. 洛谷 P2735 电网 Electric Fences Label:计算几何--皮克定理

    题目描述 在本题中,格点是指横纵坐标皆为整数的点. 为了圈养他的牛,农夫约翰(Farmer John)建造了一个三角形的电网.他从原点(0,0)牵出一根通电的电线,连接格点(n,m)(0<=n& ...

  3. Linux内核【链表】整理笔记&lpar;2&rpar;

    关于链表我们更多时候是对其进行遍历的需求,上一篇博文里我们主要认识了一下和链表操作比较常用的几个内核API接口,其入参全都是清一色的struct list_head{}类型.至于链表的遍历,内核也有一 ...

  4. yii redies 不同的工程缓存key的问题

    参考这篇文章 基本配置操作: yii main.php中: return array( ... 'components'=>array( 'redis_cache' => array ( ...

  5. &lbrack;转&rsqb; java&period;lang&period;IllegalArgumentException&colon; Document base D&colon;&bsol;apache-tomcat-7&period;0&period;47&bsol;webapps&bsol;XXX错误

    启动服务器,报上述错误,是因为在服务器中(如tomcat)删除了某项目,单残留的配置文件没删除造成的.解决办法是到服务器中找到conf\Catalina\localhost下找到错误信息中对应的配置文 ...

  6. nodejs for centos配置

    mongodb http://www.cnblogs.com/zhoulf/archive/2013/01/31/2887439.html nodejs http://zhaohe162.blog.1 ...

  7. 栈的应用2——超级计算器(中缀与后缀表达式)C语言

    输入中缀表达式输出结果(结果可以是小数,但输入必须是整数)  #include<stdio.h> #include<stdlib.h> //需要两个栈,一个储存结果,一个储存运 ...

  8. cURL error 60&colon; SSL certificate problem&colon; unable to get local issuer

    github 问题连接 https://github.com/yabacon/paystack-php/wiki/cURL-error-60:-SSL-certificate-problem:-una ...

  9. MyBatis源码解析(七)——DataSource数据源模块之托管数据源

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6675700.html 1 回顾 之前介绍的非池型与池型数据源都是MyBatis自己定义的内 ...

  10. C&plus;&plus;基础算法学习——汉洛塔问题

    汉诺塔问题古代有一个梵塔,塔内有三个座A.B.C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图).有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中, ...