1、简述

appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。

“移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。

“移动web应用”是指使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的 Chrome)。

“混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。比如,像 Phonegap,可以帮助开发者使用网页技术开发应用,然后用原生代码封装,这些就是混合应用。

重要的是,appium是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性。

2、appium与Selenium区别

appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。(相互关系)

appium客户端类库实现了Mobile JSON Wire Protocol(一个标准协议的官方扩展草稿)和W3C WebDriver spec(一个传输不可预知的自动化协议,该协议定义了MultiAction 接口)的元素。(内部实现)

appium服务端定义了官方协议的扩展,为appium 用户提供了方便的接口来执行各种设备动作,例如在测试过程中安装/卸载App。这就是为什么我们需要appium特定的客户端,而不是通用的Selenium 客户端。当然,appium 客户端类库只是增加了一些功能,而实际上这些功能就是简单的扩展了Selenium 客户端,所以他们仍然可以用来运行通用的Selenium会话。(不同点)

3、特点

appium是跨平台的,可以用在多平台上,如:OSX,Windows以及Linux桌面系统上运行。

appium选择了Client/Server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是appium及Selenium(WebDriver)如何做到支持多语言的原因;

appium扩展了WebDriver的协议,没有自己重新去实现一套。这样的好处是以前的WebDriver API能够直接被继承过来,以前的Selenium(WebDriver)各种语言的binding都可以拿来就用,省去了为每种语言开发一个client的工作量;

支持多语言。

语言/框架Github地址

4、appium工作原理

appium是如何工作的。

首先,appium支持多语言,因为它针对流的几种语言分别开发的相应的appium库。好处就是我们可以选择自己熟悉的语言编写appium脚本。

其次,appium支持多平台,包括MAC和Windows。它针对这两大平台开发了appium-Server。

最后,appium又同时支持Android 和 iOS两个操作系统。

这就使得appium变得非常灵活。

当我在MAC平台上,通过Python(python-client )编写了一个appium自动化脚本并执行,请求会首先到 appium.dum (MAC下的appium-Server),appium-Server通过解析,驱动iOS设备来执行appium自动化脚本。

或者,我在Windows平台上,通过Java( java-client )编写了一个appium自动化脚本并执行,请求会首先到 appiumForWindow.zip(Window下的appium-Server),appium-Server通过解析,驱动Android虚拟机或真机来执行appium脚本。

所以,你会看到appium的强大之处就在于此。

5、需要安装什么?

这才是你最关心的问题,使用appium都需要安装些什么?其实,从appium工作原理你就应该知道需要装什么了。

编程语言:Python ,Java

appium client 请参考 支持多平台、多语言 的列表,根据你选择的语言来选择对应的 appium-client。

appium Server 即nodejs安装命令行或下载安装包安装可视化Server服务。

测试运行环境,即:你需要一个Android模拟器,或 一个 Android 手机,或 一台 iPhone 手机。

importjava.net.MalformedURLException;importjava.net.URL;importjava.util.concurrent.TimeUnit;importorg.openqa.selenium.By;importorg.openqa.selenium.WebElement;importorg.openqa.selenium.remote.DesiredCapabilities;importio.appium.java_client.android.AndroidDriver;importio.appium.java_client.android.AndroidKeyCode;public classApp {public static void main(String[] args) throwsMalformedURLException {

AndroidDriver driver= null;

DesiredCapabilities des= newDesiredCapabilities();//des.setCapability("automationName", "Appium");//Selendroid//自动化的模式选择//des.setCapability("app", "C:\\software\\CalcTest.apk");//配置待测试的apk的路径//des.setCapability("browserName", "chrome");//h5

des.setCapability("platformName", "Android");//平台名称

des.setCapability("platformVersion", "4.4");//手机操作系统版本

des.setCapability("udid", "127.0.0.1:62025");//连接的物理设备的唯一设备标识

des.setCapability("deviceName", "S4");//使用的手机类型或模拟器类型 UDID//com.tianqi2345/com.tianqi2345.homepage.ChooseCityActivity

des.setCapability("appPackage", "com.tianqi2345");//App安装后的包名,注意与原来的CalcTest.apk不一样

des.setCapability("appActivity", "com.tianqi2345.homepage.ChooseCityActivity");//app测试人员常常要获取activity,进行相关测试,后续会讲到

des.setCapability("unicodeKeyboard", "True");//支持中文输入

des.setCapability("resetKeyboard", "True");//支持中文输入

des.setCapability("newCommandTimeout", "60");//没有新命令时的超时时间设置

des.setCapability("nosign", "True");//跳过检查和对应用进行 debug 签名的步骤

driver= new AndroidDriver(new URL("http://192.168.0.251:34000/wd/hub"), des);//虚拟机默认地址

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//设置超时等待时间,默认9500ms

WebElement findElement = driver.findElement(By.id("com.tianqi2345:id/search_edit_text"));

findElement.click();

findElement.sendKeys("广州");try{

Thread.sleep(5000);

}catch(InterruptedException e) {

e.printStackTrace();

}

System.out.println("=============测试============");if (driver != null) {

driver.closeApp();

}

}

}

pom.xml

4.0.0

com.ling

appium

0.0.1-SNAPSHOT

jar

appium

http://maven.apache.org

UTF-8

io.appium

java-client

6.1.0

junit

junit

4.12

test

org.apache.maven.plugins

maven-compiler-plugin

3.5.1

1.8

1.8

UTF-8

appium for java教程_appium自动化测试入门(java版)相关推荐

  1. java开发可重用代码包工具包_[Java教程]彻底搞懂Java开发工具包(JDK)安装及环境变量配置...

    [Java教程]彻底搞懂Java开发工具包(JDK)安装及环境变量配置 0 2021-01-04 04:00:04 安装并配置JDK环境变量,不但要知道怎样做,也要知道为什么这样做,知其然知其所以然. ...

  2. java编写流星_[Java教程]【原创】java 流星划过天空

    [Java教程][原创]java 流星划过天空 0 2015-10-29 10:00:06 1 import java.awt.Color; 2 import java.awt.Graphics; 3 ...

  3. JAVA教程 第六讲 Java的线程和Java Applet(二)

    6.3 Java Applet 前面的章节我们阐述了Application的应用,这一讲我们将介绍java的另一类应用java Applet,即java小应用程序. 在Java问世的头几年里,之所以如 ...

  4. 学javaweb要先学java吗_怎么入门Java Web,我应该先学什么?

    想要学习Java Web,JavaSE的知识肯定是少不了的 学习Java Web的第一步肯定要知道什么是servlet,什么是tomcat,然后Java Web里面还有JSP,在学习之前你也需要学习前 ...

  5. java教程系列二:Java JDK,JRE和JVM分别是什么?

    多情只有春庭月,犹为离人照落花. 概述 本章主要了解JDK,JRE和JVM之间的区别.JVM是如何工作的?什么是类加载器,解释器和JIT编译器.还有一些面试问题. Java程序执行过程 在深入了解Ja ...

  6. appium自动化测试_Appium自动化测试入门教程No.1—— Appium介绍

    (1)特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. >>"移动原生应用"是指那些用iOS ...

  7. appium java 虫师_appium新手入门(9)—— appium API 之应用操作

    本小节的所罗列的方法主要针对应用的操作,如应用的安装.卸载.关闭.启动等. 1.安装应用 方法: installApp() 安装应用到设备中去.需要apk包的路径. driver.installApp ...

  8. appium java环境_Appium环境搭建(Windows版)

    注:appium安装到C盘,node.js安装到C盘 一.安装node.js 1.到官网下载node.js:https://nodejs.org/en/download/ 2.获取到安装文件后,直接双 ...

  9. 查看ocx控件方法_Appium自动化测试入门教程No.8——定位控件

    Appium 通过 uiautomatorviewer.bat 工具来查看控件的属性.该工具位于 Android SDK 的 /tools/bin/ 目录下. 常用的Appium定位控件有如下: 一. ...

最新文章

  1. 机器学习入门(05)— 使用 NumPy 实现 3 层简单神经网络
  2. 反射应用--取得类的结构
  3. 利用PHP-ExcelReader实现PHP导入Excel数据[不通过CSV]
  4. 【python数据挖掘课程】二十三.时间序列金融数据预测及Pandas库详解
  5. 如何使用SAP Intelligent Robotic Process Automation自动操作Excel
  6. jquery弹出插件
  7. 前端学习(1349):用户的增删改查操作6删除
  8. 电子科学与技术相关索引汇总
  9. java中使用lua脚本
  10. Python实现二分法搜索
  11. vitamio 缓冲一部分时,loading还没消失,直接点击播放,loading未能消失
  12. OPPO海外功臣realme将回归国内 目标竞争对手:红米和荣耀
  13. 解读ASP.NET 5 MVC6系列(13):TagHelper
  14. 数据结构与算法笔记(四) 循环链表和双向链表
  15. js 使用replace替换、全部替换、替换动态数据方法
  16. sklearn计算准确率,召回率,精确率,F1函数
  17. 今天没白过之《Linux的变量》
  18. 基于java的心理健康网站的设计与实现_心理评测网站设计与实现(JSP,MySQL)(含录像)...
  19. 设计文档应该怎么写?
  20. openwrt nas_【群晖】用群晖虚拟机安装New Pi(OpenWRT)软路由系统

热门文章

  1. 什么MySQL语句在存储过程体中是合法的
  2. mysql必_MySQL必知必会(一)
  3. word文档打印 自动编码_办公室文件打印有哪些技巧 办公室文件打印技巧介绍【图文】...
  4. ansible 配置文件优先级
  5. 为什么NX10帮助功能无法找到HTML,NX10.0 新功能介绍视频教程专辑
  6. Linux:守护进程详解及实现
  7. elementui的css文件没有引入_Python中引入模块详细介绍,使用模块的过程中注意事项教程...
  8. [LeetCode][Python][C#]刷题记录 26. 删除排序数组中的重复项
  9. Java_基础—List的三个子类的特点
  10. Android中土司(Toast)的使用