20140507

Selenium一般用在web自动化上,为什么Android上也能用呢?

如图,手机端和DB联动:手机端的客户端给server发数据流,进行增删改查操作,这种写数据用update更新,更新后计数器+1,表示手机端对server进行了一次访问,有了一笔交易;

db(如mysql)会同步到网页上给大家看,给网页发个消息,说已经有一笔交易,

网页显示完毕后,要反馈给db一个消息,告诉用户看到了。

db所在的server会通过httpsocket 连接,告诉手机客户端,同步显示网页的东西。

就是说,手机客户端只是占到其中的三分之一左右,后台的键值对校验,网页同步显示等都要关注。

左边是Native Driver,右边是selenium。

Native Driver是google做的简化版selenium,该工具是webdriver API的一种实现,使用原生UI而不是浏览器UI的自动化测试框架,用于运行Android应用程序的功能测试。Google决定重用WebDriver API 用于原生应用而不是创建全新的接口,是应为两者之间有许多相似点--他们都控制相同的UI操作,如点击、输入、读取文本、切换窗口。而且熟悉WebDriver的用户不需要学习另一种API就可以立即开始使用NativeDriver。它是运行在Android里面的,并入了framework框架。

如果要使用Nativedriver,在编译版本的时候,比如小米,编译时要把框架加进去,最后生成两个jar包,把这两个jar包加入到project中,就可以引用NativeDriver进行自动化测试了。拿到一个手机如果没把Native包给你,就做不了自动化测试了。

上面那个图,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)

Selenium之Android使用学习的更多相关文章

  1. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  2. Android开发学习路线图

    Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...

  3. Android动画学习(二)——Tween Animation

    前两天写过一篇Android动画学习的概述,大致的划分了下Android Animation的主要分类,没有看过的同学请移步:Android动画学习(一)——Android动画系统框架简介.今天接着来 ...

  4. Android自动化学习笔记:编写MonkeyRunner脚本的几种方式

    ---------------------------------------------------------------------------------------------------- ...

  5. Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例

    ---------------------------------------------------------------------------------------------------- ...

  6. android开发学习笔记000

    使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...

  7. Android Animation学习(六) View Animation介绍

    Android Animation学习(六) View Animation介绍 View Animation View animation系统可以用来执行View上的Tween animation和F ...

  8. Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition

    Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition Property animation系统还提供了对ViewGroup中的View改变 ...

  9. Android Animation学习(四) ApiDemos解析:多属性动画

    Android Animation学习(四) ApiDemos解析:多属性动画 如果想同时改变多个属性,根据前面所学的,比较显而易见的一种思路是构造多个对象Animator , ( Animator可 ...

随机推荐

  1. javascript is ths best computer language

    alert('javascript is one of the best computer languages')

  2. 全面质量管理体系运转的基本方法 PDCA

    PDCA管理循环 PDCA循环作为全面质量管理体系运转的基本方法,其实是需要搜集大量数据资料,并综合运用各种管理技术和方法.全面质量管理活动的全部过程,就是质量计划的制订和组织实现的过程,这个过程就是 ...

  3. router登录逻辑实现页面跳转

    main.js文件中router.beforeEach((to, from, next) => { NProgress.start() const token = localStorage.ge ...

  4. PHP的Session机制解析 2

    在鸟哥的博客看到对php session的过期时间的一篇文章,在此记录. 原文地址:http://www.laruence.com/2012/01/10/2469.html 以下是鸟哥博客原文: 今天 ...

  5. Chrome-逆向分析JS-1分析google网站翻译器原文存放位置

    剧透:就是使用了一下 Chrome DevTools 的 Memory 功能,通过已知的 JS 变量的值查找 JS 内存中变量的引用 # 一:不分析一下现有的网页翻译方法么? 总所周知,(As is ...

  6. [题解]RGB Substring (hard version)-前缀和(codeforces 1196D2)

    题目链接:https://codeforces.com/problemset/problem/1196/D2 题意: q 个询问,每个查询将给你一个由 n 个字符组成的字符串s,每个字符都是 “R”. ...

  7. selenium,webdriver,xpath获取全国各地的邮编

    代码要多敲 注释要清晰 其中区号没有拿取出来 看到的朋友可以作为练习 ,有好的方法可以在下面留言 from selenium import webdriver from lxml import etr ...

  8. Seq2Seq和Attention机制入门介绍

    1.Sequence Generation 1.1.引入 在循环神经网络(RNN)入门详细介绍一文中,我们简单介绍了Seq2Seq,我们在这里展开一下 一个句子是由 characters(字) 或 w ...

  9. 常见的3种Class级别的错误

    ClassNotFoundException 很明显,这个错误是找不到类异常,即在当前classpath路径下找不到这个类. ClassNotFoundException继承了Exception,是必 ...

  10. pixi与lottie-web的benchmark测试

    生产版本 "dependencies": {     "lottie-web": "^5.5.7",     "pixi-spin ...