一、我是谁,我的特点是什么

  Appium是一款开源测试自动化框架,可用于原生、混合和移动Web应用程序。它使用WebDriver协议驱动iOS,Android和Windows应用程序。重要的是,Appium是“跨平台”的:它允许您使用相同的API针对多个平台(iOS,Android,Windows)编写测试。这使得iOS,Android和Windows测试套件之间的代码重用成为可能。 

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

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

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

  Appium哲学

    根据以下四条原则概述的理念,Appium的设计旨在满足移动自动化需求:

    1. 您不必重新编译您的应用或以任何方式对其进行修改以实现自动化。
    2. 你不应该被锁定到特定的语言或框架来编写和运行你的测试。
    3. 当涉及到自动化API时,移动自动化框架不应该重蹈覆辙。
    4. 一个移动自动化框架应该是开放源代码,在精神和实践以及名义上!

  支持多平台、多语言

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

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

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

语言/框架 Github地址
Python https://github.com/appium/python-client
Ruby  https://github.com/appium/ruby_lib
Java https://github.com/appium/java-client
JavaScript (Node.js) https://github.com/admc/wd
Objective C https://github.com/appium/selenium-objective-c
PHP https://github.com/appium/php-client
C# (.NET) https://github.com/appium/appium-dotnet-driver
RobotFramework https://github.com/jollychang/robotframework-appiumlibrary

二、我和selenium的关系

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

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

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

三、我是咋工作的咧

  我这么厉害,那我是怎么工作的呢?通过下图简单的展示出了Appium的工作原理(该原理图是本人根据个人理解和网上的一些资料所得出,如有不对之处,欢迎指正)。

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

然后是它的服务,Appium支持多平台,包括MAC和Windows。它针对这两大平台开发了Appium-Server。

其次是驱动同时支持Android 和 iOS两个操作系统,Appium-Server 通过调用不同的接口来实现对Apk/Ipa的操作。针对Android设备,Android SDK 版本在17以上的会通过调用Android 系统 UIAutomator 组件的接口来实现相应操作,SDK版本在17以下会通过调用Android系统Senlendroid组件的接口来实现相应操作;针对IOS设备,则通过调用IOS系统Apple Instruments组件的接口来实现相应操作的。

最后对不同系统的设备上应用的自动化操作,同时支持Android 模拟器、真机和IOS真机。

综上所述,这就使得Appium变得非常灵活。

即,当我在MAC平台上,通过Python(python-client )编写了一个Appium自动化测试脚本并执行,请求会首先到 Appium.dmg (Mac下的Appium-Server),Appium-Server通过解析,然后调用IOS系统的Apple Instruments组件的接口从而驱动iOS设备来执行Appium自动化测试脚本。

亦或者,我在Windows平台上,通过Java( Java-client )编写了一个Appium自动化脚本并执行,请求会首先到 AppiumForWindow.zip(Window下的Appium-Server),Appium-Server通过解析,然后调用Android模拟器或真机相关组件的接口从而驱动Android模拟器或真机来执行Appium自动化脚本。

四、怎么才能让我为你效力

    1.如果你需要安装使用Appium,你必须先要有一个基础的JAVA环境,即安装并配置好JDK。具体配置教程的传送门

    2.编程语言,一门你熟悉且运用的比较顺手的编程语言。我用的是Python,目前python的下载和安装已经变得很简单了,直接去官网下载然后运行安装就好了。官网下载传送门

    3.有了编程语言,你必须就得有一个用于“搬砖”(写代码)的IDE,这个根据个人喜好不同,都会有不同选择。唯一原则:用着顺手就好。  

    4.下载安装一个Appium Server

      可根据你所使用的计算机系统平台,选择一个对应的Appium Server。具体可参考三、我是咋工作的咧

    5.下载安装一个Appium Client

      可以在支持多平台、多语言小节的Client列表内,根据你选择的语言来选择下载并安装对应的Appium Client。

    6.最后为了方便调试和更顺畅的玩耍安卓应用自动化,你还需要有一个安卓的SDK。Android SDK配置教程

    

Ps:在编写过程中对虫师大大的相关文章有所借鉴,在此表示感谢

Appium笔记(一) 丶Appium的自我介绍的更多相关文章

  1. Appium笔记(二) 丶Appium的安装

    一.前言 Appium 中有个很重要的组件Appium-Server,它主要用来监听我们的移动设备(真机或模拟器),然将不同编程语言编写的 appium 测试脚本进行解析,然后,驱动移动设备来运行测试 ...

  2. python appium笔记(二):元素定位

    #这里的示例是用android来说明的,xpath应该是通用的,resource-id不太清楚,没配过IOS的环境 #环境配置和一些参数的意思不清楚可以看我上一篇python appium笔记(一) ...

  3. python appium笔记(一):appium android环境配置及示例

     (一) 简介 Appium是一个开源的自动化测试框架,可以用来测试基于iOS.Android和Firefox OS平台的原生和混合应用.该框架使用Selenium Webdriver,在执行测试时和 ...

  4. 『与善仁』Appium基础 — 20、Appium元素定位

    目录 1.by_id定位 2.by_name定位 3.by_class_name定位 4.by_xpath定位 5.by_accessibility_id定位 6.by_android_uiautom ...

  5. Appium使用Python运行appium测试的实例

    Appium使用Python运行appium测试的实例 一.  Appium之介绍 https://testerhome.com/topics/8038 详情参考--https://testerhom ...

  6. 作业一:创建个人技术博客、自我介绍、简单的C程序

    年9月14日中午12点: 一.主要内容  建个人技术博客(博客园 www.cnblogs.com) 本学期将通过写博客的方式提交作业,实际上,最终的目的是希望同学们能通过博客的形式记录我们整个学习过程 ...

  7. 我是面试官--"自我介绍"

    工作10余年,经历过很多次面试,也面试了N多人.这些年来,已经有好些位朋友(或同事)与我聊起相关话题,涉及面试,更关乎职业生涯规划.感触颇多,就借助自媒体的浪潮,与更多的程序员一起共谈面试经历,希望可 ...

  8. Kinect开发学习笔记之(一)Kinect介绍和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...

  9. Nodejs学习笔记(十六)--- Pomelo介绍&入门

    目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...

  10. 剑指Offer——如何做好自我介绍(英文版)

    剑指Offer--如何做好自我介绍(英文版)   Good morning ladies and gentlemen, my name is Sun Huaqiang, my hometown loc ...

随机推荐

  1. Linux常用命令 查找文件

    Linux搜索命令:find / -name 'nginx'  搜索根目录下文件名为‘nginx’的文件夹 .find / -name 'nginx.conf' 搜索根目录下文件名为‘nginx.co ...

  2. Python 爬虫-Requests库入门

    2017-07-25 10:38:30 response = requests.get(url, params=None, **kwargs) url : 拟获取页面的url链接∙ params :  ...

  3. Andorid 之日历控件,可左右滑动,包含公历,农历,节假日等

    公司项目需要日历这个功能,经过查阅资料写了个demo,包含公历,农历,节假日等,还可左右滑动. 效果图: 代码: public class MainActivity extends AppCompat ...

  4. vs2015下通过opencv使用hdf5

    因为使用Kinect SDK编程,又需求高速文件I/O,所以通过opencv接口使用hdf5. (opencv 3.1以上版本,在其Extra Modules中支持hdf5) 一. 环境 OS: Wi ...

  5. 65. Valid Number *HARD*

    Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...

  6. OC 内存管理之手动内存管理MRC

    一.基本原理 1.什么是内存管理 内存管理的重要性: 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间. ...

  7. js上传图片前预览方法(支持预览多个图片)

    运用js实现上传图片前的预览(支持多张图片),实现的例子如下: 1.源码例子: 1)Js脚本页面 <!doctype html> <html> <head> < ...

  8. sgu 130Circle dp

    130. Circle time limit per test: 0.25 sec. memory limit per test: 4096 KB On a circle border there a ...

  9. String比较相等的问题探索

    String比较相等的问题探索 工作上,有个同事犯了个低级错误,把字符串的计较用了==.由于代码已经交付客户,上了生产环境,给公司带了了损失.于是看了他的代码,自己根据以前学的知识,写了几个小demo ...

  10. window上创建python3虚拟环境

    虚拟环境,就是为某个需要单独运行的软件创建一个隔绝的环境,虚拟程序中运行的程序不会影响电脑上其他软件的运行.例如同时使用python2和python3,可以在两个不同的虚拟环境中分别运行. 安装虚拟环 ...