在日常的测试工作中,我们会发现有些测试工作重复率极高,测试人员需要花费大量的时间进行这些重复性的测试,浪费了大量的人力与时间。若能够将常用的测试场景进行自动化,那必定能节省许多的人力与时间。作为一个初次步入测试行业的小白,也十分渴望能够使用自动化来分担测试工作。上网搜索了很多的资料,了解了很多工具,再加上之前有稍微接触过Appium,所以决定使用Appium开启自动化的探索。Appium支持的脚本语言有很多,例如js、java、Python、ruby,可选择一种自己熟练的脚本语言进行编写。

 
 

一、Appium工作原理

根据查阅的资料,简单的介绍一下appium的工作原理。首先Appium是c/s模式的,appium是基于webdriver协议添加对移动设备自动化api扩展而成的。webdriver是基于http协议的,第一连接会建session会话,并通过post发送一个json告知服务端相关测试信息。如下图1.1:

 
图1.1

客户端执行脚本后生成基于WebDriver协议下的URL请求,服务器接收URL请求(类似一个远程命令)并将命令转发给测试机器,测试机器接收命令,解析命令后执行相应的操作,并把执行结果返回给服务器端,服务器端再将执行结果返回给客户端。

二、Appium环境搭建(osx

1.Mac os X

 
图2.1

2.xcodeAPP store即可下载)

 
图2.2

3.VPN

环境搭建过程中有些安装需要FQ安装,所以建议安装个VPN。网上随便搜个下载即可,我使用的是WiseVPN。

4.java

java –version:检查是否有安装java环境。若没有,需要先配置java环境,http://jingyan.baidu.com/article/908080221f3cfefd91c80fbf.html(具体可百度,这个链接也非常全了,供大家参考)

 
图2.3

5.ruby

 
图2.4

6.brew

brew是Mac OS不可或缺的套件管理器。执行下列命令:ruby -e "$(curl -fsSLhttps://raw.github.com/Homebrew/homebrew/go/install)"执行后可用brew –v看看是否已经正确安装。

 
图2.5

7.node

AppiumDesktop是用node . js编写的服务器,所以需要安装node。执行下列命令:brew install node,执行后,同样使用node –v检查是否已经安装。

 
图2.6

8.npm

npm其实是Node.js的包管理工具(package manager)。我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。Npm一般在Node.js安装的时候顺带装好了。使用npm –v检查是否已经安装。

 
图2.7

9.AppiumDesktop

现在可以开始安装AppiumDesktop了!我是直接在网上下载的https://github.com/appium/appium-desktop/releases/tag/v1.5.0 appium-desktop.dmg。

10.wd

执行命令npm install wd进行wd的安装。安装后使用npm wd -v检查是否安装成功。

 
图2.8

最后,检查环境。Appium提供了一个doctor,供我们检查appium的运行环境是否都正确。运行appium-doctor。

 
图2.9

以上,证明环境都配置好了(有一处warn,不过并不影响,所以可先忽略),接下来就是进行脚本的录制了!

三、AppiumDesktop的使用

1.打开appium,启动appium服务

点击左上角的放大镜开启appium server(如下图3.2)

 
图3.1
 
图3.2

2.新会话窗口

Desired Capabilities中录入对应的配置信息(如下图1)。下面介绍一下Desired Capabilities。Desired Capabilities在启动session的时候是必须提供的。Desired Capabilities本质上是key value的对象,它会告诉appium sever你想要进行自动化的应用程序等信息。具体的通用配置对象如下:

automationName:使用哪种自动化引擎。appium(默认)还是Selendroid?

platformName:使用哪种移动平台。iOS, Android, orFirefoxOS?

deviceName:启动哪种设备,是真机还是模拟器?iPhone Simulator, iPad Simulator,真机名称etc...

app:应用的绝对路径,注意一定是绝对路径。如果指定了appPackage和appActivity的话,这个属性是可以不设置的。另外这个属性和browserName属性是冲突的。

browserName:移动浏览器的名称。比如Safari' for iOS and 'Chrome', 'Chromium', or 'Browser' for Android;与app属性互斥。

udid:物理机的id。比如1ae203187fc012g。//如果是模拟器此配置可忽略

 
图3.3
 
图3.4

编写好通用的Desired Capabilities配置信息之后可保存会话信息方便下次使用同一会话进行连接,自动保存到Saved Capability Sets(如图3.4)。最后点击Start Session(图3.3)开始会话。

3.The Inspector

会话连接成功后就会展示The Inspector,Inspector是应用程序状态的可视化表示,在应用程序上的操作都会截图展示在Inspector的左边,如图3.5所示,接下来我们就可以进行脚本的录制了。简要介绍一下Inspector页面上的信息及录制过程(以下从左至右介绍)。

 
图3.5

Select Elements:选取,可选取左边页面上的元素。获取元素的ID或者xpath等等类似的信息。选中某一元素后,该元素的详细信息会展示在右侧的视图中,并且可以在右侧选择要对此元素进行的操作,包括tap、sendkey、clear,如图3.6

 
图3.6

Swipe By Coordinates:滑动,选择Swipe By Coordinates后,在截图页面上定位两个点,页面将会根据定点滑动。如图3.7

 
图3.7

Tap By Coordinates:点击,可点击左边页面上的元素。

Back:相当于返回按钮

Refresh Source & Screenshot:刷新

Search for element:寻找元素,有些元素通过Select Elements并无法选取到,因为可能出现一页面覆盖在另一页面上边,这时可以使用Search for element进行元素的查找。如图3.8

 
图3.8

Start Recording:录制,选择录制后,你的操作过程将以脚本的形式记录在recorder中,recorder中还可以选择你想要的脚本语言,以及简单脚本或可执行脚本。(ps.值得注意的是,recorder中的脚本仅供我们参考,借用官网上的一句话:In sum, it is a learning tool, not a robust code generation feature, and should be used as such.)如图3.9

 
图3.9

到此,脚本录制就完成啦。

作者:王陌陌陌
链接:https://www.jianshu.com/p/c43a94ecca97
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Appium自动化—浅谈iOS自动化测试环境搭建的更多相关文章

  1. 浅谈Java语言环境搭建-JDK8

    title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...

  2. IOS自动化测试环境搭建(Python & Java)

         一.前言 IOS的App自动化测试与Android的一样,也可以用appium来进行.但是IOS自动化依赖苹果的osx系统.Xcode构建等,且封闭的系统需要苹果开发者账号才可以驱动真机.A ...

  3. mac上搭建appium+IOS自动化测试环境(一)

    阅读须知 由于OS X系统最近才开始接触,所以有些东西也不是很清楚,这里只提供方法不提供原理,能解释清楚的我也会尽量解释.可能也有一些地方说的不严谨或有错的,还望大家指点一二. 实验环境 操作系统: ...

  4. mac上搭建appium+IOS自动化测试环境(二)

    上一篇: mac上搭建appium+IOS自动化测试环境(一) 9.安装appium-xcuitest-driver依赖 进入WebDriverAgent安装目录,运行bootstrap 首先进入目录 ...

  5. 【Mac + Appium + Python3.6学习(三)】之IOS自动化测试环境配置

    在做这一节之前先配置我的另一篇文章所需要安装的前提准备条件:<[Mac + Appium学习(一)]之安装Appium环境前提准备> 一.安装IOS自动化测试环境 配置环境: Appium ...

  6. 全网最全最细的appium自动化测试环境搭建教程以及appium工作原理

    一.前言 ​ 对于appium自动化测试环境的搭建我相信90%的自学者都是在痛苦中挣扎,在挣扎中放弃,在放弃后又重新开始,只有10%的人,人品比较好,能够很快并顺利的搭建成功.appium 自动化测试 ...

  7. Appium 简介与自动化测试环境搭建

    1. Appium 简介 2. Appium 自动化测试环境搭建 1. Appium 简介 Appium 是一个开源测试自动化框架,可用于原生,混合和移动 Web 应用程序测试. 它使用 WebDri ...

  8. 浅谈iOS中的userAgent

    浅谈iOS中的userAgent   User-Agent(用户代理)字符串是Web浏览器用于声明自身型号版本并随HTTP请求发送给Web服务器的字符串,在Web服务器上可以获取到该字符串. 在公司产 ...

  9. Web自动化测试环境搭建1(基于firefox火狐浏览器)

    自动化测试是时代趋势,因此很多测试人员开始研究自动化测试,web自动化测试化测试并不难,但是很多人都是被挡在了环境搭建这一步,后面学习激情全无,这里,韬哥手把手教大家搭建火狐浏览器下的自动化测试环境( ...

随机推荐

  1. 单选与复选控件JRadioButton与JCheckBox的使用

    -----------------siwuxie095 工程名:TestUI 包名:com.siwuxie095.ui 类名:TestTextFieldAndTextArea.java 工程结构目录如 ...

  2. C++对ASCII文件的操作例子

    从键盘读入一行字符,把其中的字母字符依次放在磁盘文件f2.dat中,再把它从磁盘文件读入程序,将其中的小写字母改写成大写字母,再存入磁盘文件f3.dat. code: #include<iost ...

  3. 05 HTML字符串转换成jQuery对象、绑定数据到元素上

    1 要求 将一段 HTML脚本 封装成一个字符串,将这个字符串转换成一个jQuery对象:然后将这个jQuery对象添加到指定的元素中去 2 步骤 定义字符串 var str = '<div i ...

  4. 【转】nginx的模块变量(HTTP核心模块变量)

    nginx的HTTP核心模块引入了大量的变量,可以在指定范围内使用这些变量的值,可以分为三类:一是客户请求头中发送的变量.二是服务器端响应头中的变量,第三是nginx产生的各种变量,我们可以使用$变量 ...

  5. 优先队列详解priority_queue .RP

    ) 删除.在最小优先队列(min priorityq u e u e)中,查找操作用来搜索优先权最小的元素,删除操作用来删除该元素;对于最大优先队列(max priority queue),查找操作用 ...

  6. git仓库迁移的解决方案

    一.问题 在github中遇到感兴趣的项目,直接克隆下来,随着兴趣越来越浓,在本地做了些修改,后来干脆想fork到自己的github仓库,又要把本地的修改提交到fork后的自己的github仓库中.这 ...

  7. [转]MySQL时间与字符串相互转换

    转至:https://www.cnblogs.com/wangyongwen/p/6265126.html 时间.字符串.时间戳之间的互相转换很常用,但是几乎每次使用时候都喜欢去搜索一下用法:本文整理 ...

  8. Java50道经典习题-程序29 求矩阵对角线之和

    题目:求一个3*3矩阵对角线元素之和分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出. 例如:下面矩阵的对角线之和为24 1 4 6 2 5 3 9 7 8 public cla ...

  9. .NET 图片上传接收类

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  10. [hdu 1568] Fibonacci数列前4位

    2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列(f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2 ...