SEAndroid 介绍及其基本实现原理

手机平台的自动化测试工具很多,之前研究过了安卓和苹果的原生自动化测试框架,经一些同事介绍,貌似Appium是个不错的工具。

想记录一下研究的结果,也算是篇干货的文章

在网上也看了一些视频,个人认为这个自动化测试的特点就是

1. 多编程语言支持

相对于传统的IOS UIautomation只能支持js语言,Appium起到了一个翻译的作用,它其实是一个CS架构,服务器和IOS模拟器或真机直接通讯,客户端和服务器之间用HTTP协议进行交互,所以客户端用什么语言其实不重要。下面会有一个python编程的实际例子。

2. 远程测试支持

正如上面说的,客户端和服务器之间用HTTP协议通讯,那么也就是说,客户端可以和服务器在同一台机器或者不同的机器。

3. 较好的录制功能

Appium提供了一个很好的录制工具,可以让程序员一步一步的把步骤进行精确的录制

4. 单步调试

程序员可以利用高级脚本语言,比如Python对被测程序进行单步调试,比如一条命令对应一个UI动作

如何使用appium,基于2014年5月份发布的appium 1.0来说,大约是这样的,

你必须要有xcode进行自动化测试的基础,如果没有的话,请先补习

A. 如果是模拟器测试

1. 选择应用安装包的位置

2. 再选择期望的模拟器平台,IOS版本,再点Launch就可以了

3. Launch之后会发现什么都没有,其实Appium已经运行了,请注意运行的窗口中有没有错误

4. 下面就是录测试用例,点击一个蓝色的底,白色的i的按钮

5. 过一段时间后就会出现inspector的窗口

6. 下面是一个例子,比如我要点一个按钮,

6.1 首先现在左边的树形窗口里面找到一个按钮的位置,有点类似Firebug找网页控件

6.2 然后在下面的动作框选择你想要的动作,点击就是Tap,然后你会发现这个按钮真的被点击了(这是一个单步调试很直观的例子)

7. 如何把录制变成脚本

7.1 首先要点击inspector窗口的Record按钮

7.2 选择你需要的编程语言

7.3 再继续重复你需要做的UI操作

7.4 最后就是把代码拷贝出去

8. 如何重录测试

8.1 关掉inspector,

8.2 代码需要稍微的修改,Python的代码录出来居然有语法错误,这里给个例子,对照看就好了(当然必要的python库必须安装)

from selenium.webdriver.firefox.webdriver import WebDriver
from selenium.webdriver.common.action_chains import ActionChains
import time
import os
import selenium

success = True
desired_caps = {}
desired_caps[‘browserName‘] = ‘iOS‘
desired_caps[‘platform‘] = ‘Mac‘
desired_caps[‘version‘] = ‘6.1‘
desired_caps[‘device‘] = ‘iPad‘
desired_caps[‘app‘] = os.path.abspath(‘/Users/marshall/Library/Developer/Xcode/DerivedData/TestAutomation-empzzpwyyxctxidnwdsrtlssueqi/Build/Products/Debug-iphonesimulator/TestAutomation.app‘)

wd = selenium.webdriver.Remote(‘http://0.0.0.0:4723/wd/hub‘, desired_caps)
wd.implicitly_wait(60)

def is_alert_present(wd):
	try:
		wd.switch_to_alert().text
		return True
	except:
		return False

try:
	wd.find_element_by_name("First").click()
	wd.find_element_by_name("Second").click()
finally:
	wd.quit()
	if not success:
		raise Exception("Test failed.")

8.3 运行代码,查看测试结果

B. 如果是真机测试

真机测试其实遇到了些问题,我大概说一下我的步骤

1. 配置应用的BundleID和设备的UDID

BundleID不知道怎么看的请用itools

UDID不知道怎么找的请用iTunes或itools

应用必须是你自己的开发者账号签名过的

2. Launch Appium

3. 点击inspector的按钮,接下来应用会显示在iPad上,但是过一会就会闪退(我试了好几个应用都有这个问题),我已经给Appium报告了一个bug,看看会不会有回复吧。

如果有人在真机上成功使用inspector的,也请留言分享一下

SEAndroid 介绍及其基本实现原理,布布扣,bubuko.com

时间: 2024-10-09 22:32:44

SEAndroid 介绍及其基本实现原理的相关文章

从头认识java-15.7 Map(2)-介绍HashMap的工作原理-put方法

这一章节我们来介绍HashMap的工作原理. 1.HashMap的工作原理图 下图引用自:http://www.admin10000.com/document/3322.html 2.HashMap初始化的时候我们可以这样理解:一个数组,每一个位置存储的是一个链表,链表里面的每一个元素才是我们记录的元素 3.下面我们来看put的源码: public V put(K key, V value) { if (key == null) return putForNullKey(value); int

介绍使用Android JSBridge原理与实现

JSBridge 在Android中,JSBridge已经不是什么新鲜的事物了,各家的实现方式也略有差异.大多数人都知道WebView存在一个漏洞,见WebView中接口隐患与手机挂马利用,虽然该漏洞已经在Android 4.2上修复了,即使用@JavascriptInterface代替addJavascriptInterface,但是由于兼容性和安全性问题,基本上我们不会再利用Android系统为我们提供的addJavascriptInterface方法或者@JavascriptInterfa

从头认识java-15.7 Map(4)-介绍HashMap的工作原理-hash碰撞(经常作为面试题)

这一章节我们来讨论一下hash碰撞. 1.什么是hash碰撞? 就是两个对象的key的hashcode是一样的,这个时候怎么get他的value呢? 答案是通过equals遍历table那个位置上面的Entry链表. 2.例子 正常的例子: package com.ray.ch14; import java.util.HashMap; public class Test { public static void main(String[] args) { HashMap<Person, Dog>

Linux Framebuffer 驱动框架之一概念介绍及LCD硬件原理【转】

本文转载自:http://blog.csdn.net/liuxd3000/article/details/17464779 一.基本概念 帧缓冲(Framebuffer)是Linux系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作.用户不必关心物理显示缓冲区的具体位置及存放方式,这些都是由帧缓冲设备驱动本身来完成.对于帧缓冲设备而言,只要在显示缓冲区与显示点对应的区域写入颜色值,对应的颜色会自动在屏幕上显示,下一小

47 监控系统基础及zabbix介绍、zabbix工作原理及安装配置、zabbix on CentOS7、zabbix配置

02    zabbix工作原理及安装配置 配置环境 node1192.168.1.120CentOS6.7 node2192.168.1.121CentOS6.7 1.安装配置zabbix #安装前准备 [[email protected] ~]#yum -y install mysql-server mysq [[email protected] ~]# mysql mysql> CREATE DATABASE zabbix CHARACTER SET utf8; mysql> GRANT

从头认识java-15.7 Map(3)-介绍HashMap的工作原理-get方法

接着上一章节,我们来讨论一下get方法. 1.还是利用上一章节的图 下图引用自:http://www.admin10000.com/document/3322.html 我们简单说一下步骤,就是通过hashcode先找到table上面的位置,然后遍历位置上的链表 2.get方法的源码: public V get(Object key) { if (key == null) return getForNullKey(); int hash = hash(key.hashCode()); for (

简单介绍 CPU 的工作原理

1.内部架构 CPU 的根本任务就是执行指令,对计算机来说最终都是一串由 0 和 1 组成的序列.CPU 从逻辑上可以划分成 3 个模块,分别是控制单元.运算单元和存储单元 .其内部架构如下: [1]控制单元 控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register).指令译码器ID(Instruction Decoder)和 操作控制器OC(Operation Controller) 等组成,对协调整个电脑有序工作极为重要.它根据用户预先编好的程序,依次从

DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置

一.DNS简介 1.DNS ? ?DNS是域名系统(Domain Name System)的简称,它是一个将域名和IP相互映射的分布式数据库.有了DNS服务器,我们只需要记录一个网站的域名即可访问,而再也不需要记忆那一串长长的IP地址了.全球有386台根服务器,被编号为A到M共13个标号,编号相同的根服务器使用同一个IP,386台根服务器总共只使用13个IP,因此可以抵抗针对其所进行的分布式拒绝服务攻击(DDoS).中国大陆在北京有两台编号为L的根服务器镜像,编号为F.I.J的各一,共5台镜像,

Subversion实现原理介绍及钩子的使用

这里不过多介绍svn的安装.配置.使用.介绍一下Subversion的原理和工作机制. 一.实现原理:Subversion是一种集中的分享信息的系统,它的核心是版本库,它存储所有的数据,版本库按照文件树形式存储所有数据,包括所有的文件和目录.任意数量的客户端可以连接到版本库,读写这些文件,通过写数据,别人可以看到这些信息.通过读数据,别人可以看到版本的修改. 二.工作机制 1.每个工作拷贝都会保留一份基准版本. 2.只要在该基准版本有过修改,所属的本层文件以及所有的父级文件夹都会呈现出来修改标志