手机自动化培训:Appium介绍
手机自动化培训:Appium介绍
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478。
Appium介绍
Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。原生的应用是指用android或ios的sdk编写的应用,移动网页应用是指网页应用,类似于ios中safari应用或者Chrome应用或者类浏览器的应用。混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。
重要的是Appium是跨平台的,何为跨平台,意思就是可以针对不同的平台用一套api来编写测试用例。
Appium的哲学
Appium遵循下面几个原则(其实也是appium的特点):
1.使用自动化来测试一个app,但是不需要重新编译它
2.写自动化case,不需要学习特定的语言
3.一个自动化框架不需要重复造轮子
4.一个自动化框架需要开源,在精神和实践上实现开源
Appium的设计
为了遵循上面的原则,appium的解决方法分别如下:
第一条:采用底层驱动商提供的自动化框架。
IOS:苹果的UIAutomation
Android 4.2+:谷歌的 UiAutomator
Android 2.3+:谷歌的Instrumentation(已被selendroid取
第二条:采用底层驱动商提供统一API,就是WebDriver API。
WebDriver(也称Selenium WebDriver)其实是一个C/S架构的协议,叫做JSON Wire Protocol。通过这个协议,用任何语言写成的客户端都可以发送HTTP请求给服务器。这就意味着你可以自由选择你想要使用的测试框架和执行器,也可以将任何包含HTTP客户端的库文件加入到你的代码中。换句话说,Appium的WebDriver不是一个技术上的测试框架,而是一个自动化库。
第三条:因为WebDriver是一个非常成熟的网页协议且已经正在起草W3C的标准。我们为什么还要创造其他东西呢?相反,我们在WebDriver的基础上,扩展了一些适合移动端自动化协议的API。
第四条:你之所以能读到这篇文章,就是因为我们开源啦。
Appium概念
C/S 架构
Appium的核心是一个遵守REST设计风格的web 服务器,它接受客户端的连接,接收客户端的命令,在手机设备上执行命令,然后通过HTTP的响应收集命令执行的结果。这种架构给我们提供了很好的开放特性:只要某种语言有http 客户端的api,我们就可以通过这个语言写我们的测试代码,当然了我们为了方便大家使用,提供了如下的客户端库供使用:
我们还可以将服务器放到远端,比如云里,这样我们可以借助云服务来接受命令以及解析命令。
Session
自动化的过程通常在session上下文中执行。客户端初始化一个session会话,虽然不同的语言初始化的方式不同,但是他们都要发送POST/session 请求到服务器端,这些请求里面都会带有一个对象:desired capabilities ,这个时候服务器端会启动自动化session然后返回一个session ID,以后的命令都会用这个seesion ID去匹配。
Desired Capabilities
desired capabilities 这个对象其实是一个key-value的集合,里面包含了各种各样的信息,发送到服务器端后,服务器解析这些信息就知道了客户端对哪种session感兴趣,然后就会启动相应的session。这里面的信息会影响着服务器端启动session的类型。比如你platformName的值为ios,就是告诉服务器启动一个ios的session,而不是android seesion。如果safariAllowPopups的值为true,这是告诉safari类的自动化session,可以使用js打开新窗口。具体信息查看capabilities doc 详细了解。
Appium Server
Appium server使用node.js写的http服务器,遵守REST风格
Appium Clients
客户端的概念不是我们传统意义上的客户端,这里客户端更好的理解是一个扩展WebDriver 协议的库,你在用自己喜欢的语言写case的时候,将该语言扩展WebDrvier的库添加到你的环境中,你就可以理解这是个客户端。具体的库可以参见下面的内容:
| 语言 | 库地址 |
|---|---|
| Ruby | https://github.com/appium/ruby_lib |
| Python | https://github.com/appium/python-client |
| 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 |
Appium.app,Appium.exe
在不同的操作系统下,有不同的GUI程序
| 系统 | GUI | git地址 |
|---|---|---|
| windows | Appium.exe | https://github.com/appium/appium-dot-exe |
| OS X | Appium.app | https://github.com/appium/appium-dot-app |
手机自动化培训:Appium介绍的更多相关文章
- 手机自动化测试培训:appium目录结构分析
手机自动化测试培训:appium目录结构分析 移动端的自动化测试越来越普遍,poptest率先退出移动端自动化测试的课程,以appuim的python脚本版本作为授课基础,后期陆续退出java版本 ...
- appium手机自动化环境搭建
在robotframework环境安装完成的基础上进行如下安装,如果没有安装rfs环境,请先参考robotframework安装文章:Robot Framework的环境搭建 文件下载地址:链接:ht ...
- 使用Appium做手机自动化录制问题
最近在使用appium做Android手机自动化脚本录制, 发现点击“tap”时,一直没有用,页面还是不能跳转. 咋办?发愁... 于是看到旁边有个“sendkeys”,那是不是能够直接发送参数不就行 ...
- Appium介绍
Appium介绍 Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的.可用于IOS和Android以及firefox的操作系统.原生的应用是指用andro ...
- 手机自动化测试:appium源码分析之bootstrap十
手机自动化测试:appium源码分析之bootstrap十 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣, ...
- appium入门级教程(1)—— appium介绍
appium介绍 官方网站与介绍 1.特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. “移动原生应用”是指那些用iOS或者 ...
- 1.appium介绍
appium介绍 官方网站 1.特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. “移动原生应用”是指那些用iOS或者 An ...
- Appium 介绍及环境安装
Appium是一个可用于测试iOS. Android操作系统和Windows桌面平台原生应用,移动网页应用和混合应用的自动化测试框架. 原生应用(Native App):用 android.iOS或者 ...
- 手机自动化测试:appium源码分析之bootstrap三
手机自动化测试:appium源码分析之bootstrap三 研究bootstrap源码,我们可以通过代码的结构,可以看出来appium的扩展思路和实现方式,从中可以添加我们自己要的功能,针对app ...
随机推荐
- 《剑指offer》— JavaScript(1)二维数组中的查找
二维数组中的查找 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ** ...
- 剑指offer编程题Java实现——面试题11数值的整数次方
题目: 实现函数double power(double base,int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 解题思路:最一般的方法实现数值 ...
- 每天一个linux命令(45)--telnet命令
每天一个Linux命令,今天是网络命令中的Telnet. Telnet 命令通常用来远程登录,Telnet 程序是基于 Telnet 协议的远程登录客户端程序.Telnet 协议是TCP/IP协议族中 ...
- Laravel的console使用方法
适用场景:分析数据(日志) php artisan make:console 你的命令类名 示例: php artisan make:console Check 在\app\Console\Comma ...
- 使用js在网页上记录鼠标划圈的小程序
Spin-Wheel 实现鼠标在网页上转圈时记录转动圈数的小程序,每转一圈记录一次,同时要是顺时针方向的. 问题分析与实现 这个小程序的难点在于如何知道鼠标完成了一个转圈的动作,而且人工使用鼠标划圈时 ...
- [lua] 游戏客户端逻辑使用lua协程
我们的游戏有这样一种情景:客户端中角色需要用到一些公会的数据,但服务器不会在玩家(创角后)一进入到游戏里就推送给玩家,而是需要客户端自己在需要的时候向服务器请求公会的数据,之前的实现就是在请求消息的时 ...
- SEO-站外优化规范
站外优化规范 新站 前期(提高网站曝光率<信息发布平台>) 一. 分类目录信息发布 二. 黄页网信息发布 三. 友链平台信息发布 四. 各大论坛引蜘蛛区信息发布 五. 网址提交 六. 社区 ...
- HTML5学习笔记<六>: HTML5框架, 背景和实体
HTML5框架 1. 框架标签(frame): 框架对于页面的设计有着很大的作用 2. 框架集标签(<frameset>): 框架集标签定义如何将窗口分割为框架 每个frameset定义一 ...
- Android中的几种多线程实现
有以下几种方式: 1)Activity.runOnUiThread(Runnable) 2)View.post(Runnable) ;View.postDelay(Runnable , long) 3 ...
- 解决input的回车enter和失焦blur冲突问题:实现回车保存,blur还原编辑内容功能
最近做项目遇到: 背景:点击单元格,easyUI自动生成input可编辑框. 问题点:input的回车enter和失焦blur冲突问题:实现回车保存,blur还原编辑内容功能 要实现需求: 1.回车键 ...