appium工作流程解析
为什么选择appium
app自带测试框架,为什么要选择appium这个测试框架呢?
- Ios9.3以前使用的是UIAutomation,Ios9.3以后使用XCUITest。如果只使用Apple的UIAutomation测试框架,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。
- Android4.0以下使用基于Android Instrumentation框架实现的Selendroid,Android4.0以上使用UIAutomator。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例
- Appium是在手机操作系统自带的测试框架基础上实现的,而且它支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api,实现了真正的跨平台自动化测试
appium工作流程
- 客户端发送testcase脚本——> appium server通过PC端4723端口监听 ——> 解析脚本参数给PC端4724端口 ——> 发送给移动设备4724端口 ——> Bootstrap.jar开启socket服务,监听移动设备4724端口 ——> Bootstrap.jar把命令发给uiautomator ——> uiautomator执行命令,并返回执行结果
关于appium
- appium是C/S模式的
- appium服务端是node.js写的,所以安装appium都是先安装node,npm是Node.js的包管理工具
- 我们通常安装的appium指的是appium server,它的作用是监听pc端4723端口和脚本参数解析
- Bootstrap.jar在appium server和手机创建session成功之前,就已放入手机中,它的作用是开启socket服务,监听手机端4724端口,将pc端传过来的命令发送给UiAutomator来执行处理
- PC端4723端口用于和脚本打交道,基于WebDriver协议,脚本与appium server的通信实际上是一个HTTP request请求给appium server,在请求的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉appium服务我们希望设备接下来做什么事情
- Session 的作用就是它在appium服务上保持设备的状态信息,供在任何时间进行访问,在多次的操作行为中,存储在 Session对象中的配置信息将不会丢失,而是在整个用户会话中一直存在下去,整个测试进程中设备与程序的联系不会断开,也不需要每次都发送带配置信息的请求。将测试设备信息告知之后,client 创建1个session,在该session中通过http向appium server发送请求,appium server解析请求,完成相应操作并返回response
- desiredCapabilities的作用是告诉server本次测试的上下文
noReset: true
automationName: XCUITest
autoLaunch: false
platformName: ios
platformVersion: 10.3.1
deviceName: iPhone 6
udid: xxxxxxxxxxxxxxxxxxxxxxxxxx
bundleId: xxxxx
- 更多配置请查看官方文档:[http://appium.io/docs/en/writing-running-appium/caps/]
appium工作流程解析的更多相关文章
- Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制
一.SpringMVC概述 SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装.SpringMVC是处于Web层的框架,所以其主要的作用就是用来 ...
- 服务容错保护断路器Hystrix之二:Hystrix工作流程解析
一.总运行流程 当你发出请求后,hystrix是这么运行的 红圈 :Hystrix 命令执行失败,执行回退逻辑.也就是大家经常在文章中看到的“服务降级”. 绿圈 :四种情况会触发失败回退逻辑( fal ...
- Hystrix工作流程解析
搭建Hystrix源码阅读环境 引入依赖 <dependency> <groupId>com.netflix.hystrix</groupId> <artif ...
- Java开发学习(十五)----AOP入门案例及其工作流程解析
一.AOP简介 1.1 什么是AOP AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构. OOP(Object Oriented ...
- SpringMVC的应用与工作流程解析
一:SpringMVC是什么 SpringMVC只是Spring的一个子框架,作用学过Struts2的应该很好理解,他们都是MVC的框架.学他就是用来代替Struts2的,那么为什么不用Struts2 ...
- Appium 框架工作流程及原理
目前Appium框架可以时支持android 和 ios 两个操作系统的App自动化测试,咱们分别对以下两款操作系统的工作流程进行说明. 一.appium-Android工作流 在Android端,a ...
- Mybatis工作流程及其原理与解析
Mybatis简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBat ...
- Netty 源码解析(七): NioEventLoop 工作流程
原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 今天是猿灯塔“365篇原创计划”第七篇. 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty 源码解析(一): 开始 Netty 源 ...
- Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute
上篇文章中分析了Custom Binder的弊端: 由于Custom Binder是和具体的类型相关,比如指定类型A由我们的Custom Binder解析,那么导致系统运行中的所有Action的访问参 ...
随机推荐
- java执行sql语句使用别名时显示Column '***' not found
java执行sql语句使用别名时显示Column '*' not found 在做一个小项目时遇到个问题,执行sql语句使用别名时总是报sql异常 Column '*' not found,折腾半天终 ...
- Java“封装”的例子
/*功能:Java"封装"的典型例子*/ public class Demo3_5{ public static void main(String args[]){ ...
- uda 4.C++面向对象编程
Python vs C++ 对比课 在本课中,你将学习如何用 C++ 编写类.像以前的课程一样,你需要比较 Python 的编程方式和 C++ 中编程方式的不同. 我们直接看例子.下面是一个名为 ...
- android学习——android 常见的错误 和 解决方法
1. Application does not specify an API level requirement! 解决方法:AndroidManifest.xml中 加入: <uses-sdk ...
- mysql数据库之mysql下载与设置
下载和安装mysql数据库 mysql为我们提供了开源的安装在各个操作系统上的安装包,包括ios,liunx,windows. mysql的安装,启动和基础配置-------linux版本 mysql ...
- jQuery对html元素的取值与赋值实例详解
jQuery对html元素的取值与赋值实例详解 转载 2015-12-18 作者:欢欢 我要评论 这篇文章主要介绍了jQuery对html元素的取值与赋值,较为详细的分析了jQuery针对常 ...
- 2016年开源软件排名TOP50,最受IT公司欢迎的50款开源软件
2016年开源软件排名TOP50,最受IT公司欢迎的50款开源软件 过去十年间,许多科技公司已开始畅怀拥抱开源.许多公司使用开源工具来运行自己的 IT 基础设施和网站,一些提供与开源工具相关的产品和服 ...
- POJ2976 题解 0/1分数规划入门题 二分
题目链接:http://poj.org/problem?id=2976 关于 0/1分数规划 参见 这篇博客 实现代码如下: #include <cstdio> #include < ...
- 浅谈集合框架五——集合框架扩展:Collections工具类的使用,自定义比较器
最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出.初学者对于本篇博客只建议作为参考,欢迎留言共同学习. 之前有介绍集合框架的体系 ...
- 2019-9-2-Visual-Studio-自定义项目模板
title author date CreateTime categories Visual Studio 自定义项目模板 lindexi 2019-09-02 12:57:38 +0800 2018 ...