20140507html
Selenium通常用在web自动化上,为何Android上也能用呢?java
如图,手机端和DB联动:手机端的客户端给server发数据流,进行增删改查操做,这种写数据用update更新,更新后计数器+1,表示手机端对server进行了一次访问,有了一笔交易;mysql
db(如mysql)会同步到网页上给你们看,给网页发个消息,说已经有一笔交易,linux
网页显示完毕后,要反馈给db一个消息,告诉用户看到了。git
db所在的server会经过httpsocket 链接,告诉手机客户端,同步显示网页的东西。web
就是说,手机客户端只是占到其中的三分之一左右,后台的键值对校验,网页同步显示等都要关注。面试
左边是Native Driver,右边是selenium。sql
Native Driver是google作的简化版selenium,该工具是webdriver API的一种实现,使用原生UI而不是浏览器UI的自动化测试框架,用于运行Android应用程序的功能测试。Google决定重用WebDriver API 用于原生应用而不是建立全新的接口,是应为二者之间有许多类似点--他们都控制相同的UI操做,如点击、输入、读取文本、切换窗口。并且熟悉WebDriver的用户不须要学习另外一种API就能够当即开始使用NativeDriver。它是运行在Android里面的,并入了framework框架。shell
若是要使用Nativedriver,在编译版本的时候,好比小米,编译时要把框架加进去,最后生成两个jar包,把这两个jar包加入到project中,就能够引用NativeDriver进行自动化测试了。拿到一个手机若是没把Native包给你,就作不了自动化测试了。json
上面那个图,Native Driver有两个东西,黄色部分,一个是server,一个是client,看左边的图,APK装入手机后,经过framework层(具体是Instrumentation framework)与底层进行通讯(这不就是佳林老师讲的架构嘛),server会启动一个端口叫4444,与APK进行通讯,那么端口服务会把framework的view视图所有读出来,读出来以后判断是哪一个控件,是button呢,仍是文本框呢?selenium有三种方法去找控件:1. path 2. id 3. classname。再看右边的client端,这是要部署在本身的自动化脚本里。
QTP比selenium强大太多了,各类浏览器都支持,能够截屏对比,断言,都是自动的,可是对于人而言,没有意义。selenium是开源的自动化框架,走到哪里均可以用;且太贵。
Selenium有四个版本,RC是最先的,如今名字叫WebDriver了,脚本优美简洁。
LR 评估性能,大企业才会用到。
Selenium是ThroughtWorks公司一个强大的开源web功能测试工具系列,本系列如今主要包括如下四款:
1. Selenium Core:支持DHTML(动态超文本)的测试案例(效果相似数据驱动测试),它是Selenium IDE和Selenium RC的引擎。优势是写测试案例简单,支持大多数浏览器,缺点是须要远程安装,Selenium语言也限制了复杂案例的可能性,而且没有良好的外部扩展,这都会是致命的问题。由于一款测试工具不可能100%知足你测试须要的,当它不能知足你的测试需求时候,它必须有一个扩展机制可让你使用其余的方式知足你需求,不然这款测试软件即便功能再强大,也请三思神勇,不然当投入大量资源后,才发现某些问题不能解决,那时候已经晚了,这是金老师的切身体会。
2. Selenium IDE:是火狐的插件,只支持火狐。下载下来后直接拖到火狐中,就有录制器了,很傻瓜地操做。
3. Selenium Server(过去叫Selenium RC Server):是主要的。
4. Selenium Grid:
IDE和HTA不重点讲,由于如今360浏览器是主流了。中间两个重点讲。
代码分析workflow:
面试常常问的:flick icon格式
服务器端口
对比robotium(获取view视图 找到控件 再调用touch)
select 三种方式查找webview 第一种是path 第二种是 className方法 第三种是id
Selenium的api:http://selenium.googcode.com/git/docs/api/java/index.html
1. 下载TortoiseSVN(小乌龟,好处是想下载到哪里,就在当地打开,下载,OK),这里的下载地址是:http://selenium/googlecode.com/svn/trunk
2. 下载完毕后有四个文件:thrid-party;selenium-common;server--selenium( 找不见,不知道为何)
3. 重要的类:位于server--selenium中的DriverServlet服务器核心类
位置:server--selenium/src/org/openqa/selenium/remote/server/DriverServlet.java
public class DriverServlet extends HttpServlet{
protected void service xxxx --service端口是4444,面试时常常问到
app端口 5037?
}
Dumpsys meminfo 要到linux adb shell里查看内存,或者用top查看
total 总内存 RSS 物理内存 Stack 堆栈内存 dalvik 虚拟机内存
top命令后,出现的有RSS--物理内存;
Flick类-滑动-核心是基于控件
Flick.java: 逻辑
1. 拿到WebElement,而后获得其坐标;拿到后去Flick(滑动),从左滑到右,偏移多少多少
if (elementID !=null){
WebElement element = getKnowElements().get(elementId);
Coordinates elementLocation = ((Locatable) element).getCoordinate
touchSreen.flick(elementLocation,xoffset,yoffset,speed);
}else {
touchSreen.flick(xSpeed,ySpeed);
return ResultType.SUCCESS;
安卓里经常使用格式:
json的格式[{"name":"ianthe",},]键值对
SAX 边加载边读入之前内存小经常使用
}
此处回忆一下robtium:先是getview-把它丢到ArrayList里面,再来判断是哪个控件,接下来就是getxxx(x,y,xxx)