zoukankan      html  css  js  c++  java
  • Selenium原理初步--Android自动化测试学习历程

    章节:自动化基础篇——Selenium原理初步(第五讲)

    注:其实所有的东西都是应该先去用,但是工具基本都一样,底层都是用的最基础的内容实现的,测试应该做的是:

    (1)熟练使用工具,了解各个工具的利弊,达到工具优选、因时因地制宜的目的

    (2)读源码,理解原理,能够对开源的源码进行二次再创造,改编成适合自身产品的工具;或者自己直接编写适合测试的工具

    (3)能够对测试过程中发生的异常进行分析和定位,对测试结果进行详细和系统的综合评定(需要能够分析定位问题,必须对自身产品了解,但更需要的是对底层代码和操作系统的深入分析和理解,这才是关键)

    现在的公司把测试开发和测试分的太开,测试开发就只是开发工具,供所谓的测试使用:两者应该是结合在一起的,测试必须首先深入理解功能,才能根据功能需求和测试需求自我产出更好的测试工具

    主要讲解内容及笔记:

    一、学习Selenium的原因

    项目需要

    上图的逻辑理解:

    手机app客户端向数据库发起请求,数据获取到内容后,返回到手机app端,同时网页端也要同步更新,获取到数据库端的指令;反之亦然。

    网页展示及app客户端需要即时同步沟通,网页展示及测试相关就需要用到Selenium。

    Native Driver:是google做的一个Selenium的简化版,即android里面的Selenium的简化版,用于测试手机的本地APP,提供webdriver一样风格的API。这个必须在编译的时候生成相对的jar包,如果这个Native Driver的jar包的话,就无法使用Native Driver做自动化测试,局限性比较大,但原理跟Selenium是相似的

    下面介绍基本原理:

    1、安装apk到模拟器后,会和Framework框架进行通信,Server会起一个4444的端口,通过这个端口跟FrameWork进行通信,通过这个端口就可以获取到所有的控件,再根据三中不同的方式(Path、Id以及ClassName)找到控件。

    2、客户端Client的程序需要部署在自动化脚本中,然后你可以自己写一个Test的测试程序,这个程序作用于AndroidDriver的Client端,给它发指令,然后客户端就会通过http+jscon的方式访问模拟器上的Server,进行相应的模拟操作。

    二、Selenium原理初探

    1、Selenium的简介:Web端的自动化测试工具,兼容性很好,基于Chrome、火狐、IE等的浏览器均可良好使用,

    2、下载:在官网页面上能够看到以下四个内容

    Selenium IDE:一个火狐插件(a FireFox Plugin)

    Selenium Server(曾用名:Selenium RC Server)

    The Internet Explorer Driver Server

    Selenium Client & WebDriver Language Bindings(跟特定语言相关的,建议Java、Python)

    推荐使用的是Selenium RC

    看看源码:

    1、Server——DriverServlet(核心)

    继承HttpServlet,能够拿到http的这个request and response,就可以在service函数中设置response的报头,然后就能够进行传输

    (巩固一下:adb的端口是5037,Selenium的Server的端口是4444)

    注:android里面的dumpsys meminfo,内存分析包含四个:total、Rss(物理内存)、Stack内存、Virtual内存

    2、Flick——滑动——核心是基于控件

    与Robotium的很像,获取Web的所有Element-->得到坐标点-->调用flick方法进行滑动,参数为elementlocation,xoffset,yoffset,speed

    另:SetJsonParameter,即设置Jason的参数,

    网络传数据的格式:

    (1)Json,格式:[{'xxx':xxx, 'xxx':xxx},{...}],其实跟Python的字典比较像,反正就是定义了一个格式,方便你去传输和解析,解析的话就是通过一种特殊的格式让你找到一个字段,然后再去获取到这个字段的value

    (2)SAX:动态解析

    (3)xml,格式:都是成对出现的,<xxx></xxx>

    (4)ini?应该一般用ini的比较少吧,最近在写的一个项目用的ini,其他的没做调研,反正ini是没法换行

    3、LongPressElement(跟Robotium的ClickLongOnScreen方法类似):

    基本原理都一样,都是获取Element,得到坐标点,调用LongPress方法

    如何找Element:(基本原理都类似:传递参数,然后找到跟这个参数匹配的,只不过可以通过以下三种方式来获取到而已)

    1、ByXPath

    2、ByID

    3、ByClassName

    4、ByCssSelector

    5、ByLinkText

    6、ByName

    7、ByPartialLinkText

    8、ByTagName

    核心:坐标与控件交互——找控件,定位坐标,通过对坐标进行操作

    三、Selenium演示

    写脚本:

    1、初始化

    2、testcase

    3、after的teardown里面selenium.stop()

    网易云课堂:http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=878101&courseId=712011

    金阳光测试

    新浪微博:金阳光woody

             

              网站地址

    1、百度搜:金阳光测试

    2、官网:www.goldensunshine.cc

    微信公众号

  • 相关阅读:
    软件概要设计
    Jmter进行Rabbitmq测试
    分布式锁
    实用异常
    异常集合
    本地Windows环境安装RabbitMQ Server
    MySQL千万级多表关联SQL语句调优
    mysql数据库多表关联查询的慢SQL优化
    rabbitmq详细配置
    Idea连接服务器docker并部署代码到docker实现一键启动
  • 原文地址:https://www.cnblogs.com/GoldenSunshinetester/p/4427999.html
Copyright © 2011-2022 走看看