为什么选择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都是先安装nodenpm是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

appium工作流程解析的更多相关文章

  1. Java开发学习(二十三)----SpringMVC入门案例、工作流程解析及设置bean加载控制

    一.SpringMVC概述 SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装.SpringMVC是处于Web层的框架,所以其主要的作用就是用来 ...

  2. 服务容错保护断路器Hystrix之二:Hystrix工作流程解析

    一.总运行流程 当你发出请求后,hystrix是这么运行的 红圈 :Hystrix 命令执行失败,执行回退逻辑.也就是大家经常在文章中看到的“服务降级”. 绿圈 :四种情况会触发失败回退逻辑( fal ...

  3. Hystrix工作流程解析

    搭建Hystrix源码阅读环境 引入依赖 <dependency> <groupId>com.netflix.hystrix</groupId> <artif ...

  4. Java开发学习(十五)----AOP入门案例及其工作流程解析

    一.AOP简介 1.1 什么是AOP AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构. OOP(Object Oriented ...

  5. SpringMVC的应用与工作流程解析

    一:SpringMVC是什么 SpringMVC只是Spring的一个子框架,作用学过Struts2的应该很好理解,他们都是MVC的框架.学他就是用来代替Struts2的,那么为什么不用Struts2 ...

  6. Appium 框架工作流程及原理

    目前Appium框架可以时支持android 和 ios 两个操作系统的App自动化测试,咱们分别对以下两款操作系统的工作流程进行说明. 一.appium-Android工作流 在Android端,a ...

  7. Mybatis工作流程及其原理与解析

    Mybatis简介:    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBat ...

  8. Netty 源码解析(七): NioEventLoop 工作流程

    原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 今天是猿灯塔“365篇原创计划”第七篇. 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty 源码解析(一): 开始 Netty 源 ...

  9. Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute

    上篇文章中分析了Custom Binder的弊端: 由于Custom Binder是和具体的类型相关,比如指定类型A由我们的Custom Binder解析,那么导致系统运行中的所有Action的访问参 ...

随机推荐

  1. 在JS中模拟表单的post提交,进行页面的跳转

    原文链接:https://blog.csdn.net/jal517486222/article/details/83147761 /* *功能: 模拟form表单的提交 *参数: URL 跳转地址 P ...

  2. SGU 107 987654321 problem【找规律】

    题目链接: http://acm.sgu.ru/problem.php?contest=0&problem=107 题意: 平方后几位为987654321的n位数有多少个 分析: 虽然说是水题 ...

  3. 2019-10-23-WPF-使用-SharpDx-渲染博客导航

    title author date CreateTime categories WPF 使用 SharpDx 渲染博客导航 lindexi 2019-10-23 21:10:13 +0800 2019 ...

  4. 15-8 pymysql的使用

    一 安装pymysql模块 1 pycharm安装 file-setting如图:然后点加号,搜索pymsql即可,点击安装 2 pip 安装 pip3 install pymysql 二  连接数据 ...

  5. oracle函数 end

    [功能]当:<表达式>=<表达式条件值1……n> 时,返回对应 <满足条件时返回值1……n> 当<表达式条件值1……n>不为条件表达式时,与函数deco ...

  6. 《attention is all you need》解读

    Motivation: 靠attention机制,不使用rnn和cnn,并行度高 通过attention,抓长距离依赖关系比rnn强 创新点: 通过self-attention,自己和自己做atten ...

  7. CODE FESTIVAL 2017 qual B D 101 to 010(dp)

    除非人品好,能碰巧想到思路,否则基本是做不出来dp的,除了那几个经典的dp模型.. 看了几个前几名的代码,还是t神的代码比较清晰.膜tourist 代码的思路和题解思路基本一致..... #inclu ...

  8. springmvc 返回json数据给前台jsp页面展示

    spring mvc返回json字符串的方式 方案一:使用@ResponseBody 注解返回响应体 直接将返回值序列化json            优点:不需要自己再处理 步骤一:在spring- ...

  9. DispatcherTimer 应用实例

    public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); //实例化 Dispat ...

  10. SQL server无法绑定由多个部分绑定的标示符

    原因https://blog.csdn.net/wolfalcon/article/details/54578215给了我启发,原来有犯错在insert和update的使用上了对于已存在的表(表中有字 ...