selendroid是国内使用非常少的框架、资料也少。刚好公司项目用到,给大家分享下,技术不太行,有错误还望指正。

使用selendroid契机,是公司开发的APP,需要大量捕捉Toast信息。公司的自动化平台已经很成熟,并且WEB自动化已经使用ruby watir-Webdriver。

因此为了加入公司自动化平台,使用ruby是最快的方式,但是资料少这是很头疼的事情。

使用APPIUM的时候发现指令在移动端执行的速度很慢,而在使用selendroid之后惊喜的发现配置速度很快,快要赶上webdriver的速度了。

特别说明:并非高版本(API>16)就不能使用selendroid作为自动化测试框架,实测API 21也是可以使用selendroid

原始参考资料:http://selendroid.io/

纯selendroid环境搭建

具体可参考网站资料,java -jar XXXXXx.jar -app test.apk 即可开启selendroid服务器。

Appium-selendroid环境:

但作为项目实施 建议使用appium的selendroid模式。

好处:

1、appium已经加入selendroid作为一个启动模式,日志管理、BUG定位环境搭建等都比较成熟。

2、纯selendroid直接使用selenium库作为驱动,很多辅助动能需要自己去实现,例如中文输入、unicode输入等。这些移动端测试能考虑的事情,appium团队事实上已经帮忙考虑了。

3、启动appium与默认appium模式并无区别,使用GUI开启或者 node appium.js即可。

具体的APPIUM环境搭建不在赘述,大家可以参考网上很多的教程应该都不难。

ruby初始化:

贴入代码:

# encoding utf-8
require 'watir-webdriver'
require 'appium_lib'
_caps={caps:{ app:'E:/APP/app-debug_3.1.3.876.apk',unicodeKeyboard:'True',resetKeyboard:'True',platformVersion:'5.0',automationName:'Selendroid',udid:'LGD857cfd6ea69',deviceName:'1', platformName:'Android', appActivity:'.activity.Anew.Splash.SplashActivity', appPackage:'com.tenda.router.app',newCommandTimeout:3600},appium_lib: { sauce_username: nil, sauce_access_key: nil } }
$b= Appium::Driver.new(_caps).start_driver

事实上与APPIUM初始化并无太多区别:

1、APP路径必须有,因为每次初始化都要重新安装APP。(大家不用担心APP安装会很麻烦,命令安装时间很短)

2、UID必须有 就是appium的devices name参数。

关于selendroid元素定位:

可以使用sdk里面的uiautomatorviewer工具进行定位获取ID等信息,其他用不到的可以参考selendroid官方网站的地位方式。

注意:uiautomatorviewer获取ID时需要去掉前面的Package名称/ 后面的才是selendroid的ID,否则定位不到。

并且selendroid虽然直接使用appium类,但是需要使用selennium的语法,因此使用appium的定位语句语法会报错。

我用到最多的就是

按照全词匹配查找:driver.find_element(:link_text,'Blog')

按照text的部分进行查找:driver.find_element(:partial_link_text,'Blo')

selendroid项目实战教程1的更多相关文章

  1. Python NLP完整项目实战教程(1)

    一.前言 打算写一个系列的关于自然语言处理技术的文章<Python NLP完整项目实战>,本文算是系列文章的起始篇,为了能够有效集合实际应用场景,避免为了学习而学习,考虑结合一个具体的项目 ...

  2. selendroid项目实战3 selendroid driver初始化失败问题

    小米4/LG手机作为测试用机,随着测试时间变长,driver初始化失败率越来越高. 分析: 1.手机原因: 从小米换到LG,刚开始问题确实减少了,但是时间一长,又出现类似问题,提示Connect re ...

  3. selendroid项目实战2--ruby下的TOAST定位

    网上很多 python/java捕获toast的方法,但ruby的简直没见过. selendroid客户端是基于selenium,而不一定需要appium,所以很多selenium的方法可以直接使用, ...

  4. Python框架 Flask 项目实战教程

    本文目的是为了完成一个项目用到的flask基本知识,例子会逐渐加深.最好对着源码,一步一步走.下载源码,运行pip install -r requirements.txt 建立环境python db_ ...

  5. [转]ionic3项目实战教程三(创建provider、http请求、图文列表、滑动列表)

    本文转自:https://blog.csdn.net/lyt_angularjs/article/details/81145468 版权声明:本文为博主原创文章,转载请注明出处.谢谢! https:/ ...

  6. Java支付项目实战教程,包括支付宝,微信等支付方式,不看亏!

    须知:视频来源网络,侵权请联系删除! 获取方式 扫描下面二维码回复:1024

  7. Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(二)--node解析与环境搭建

    前言 本来开始写博客的时候只是想写一下关于MongoDB的使用总结的,后来觉得还不如干脆写一个node项目实战教程实战.写教程一方面在自己写的过程中需要考虑更多的东西,另一方面希望能对node入门者有 ...

  8. PokemonGo-LBS AR项目实战

    <Pokemon GO>在2016年发布,立即成为一款现象级手游,时至今日也是最成功的AR游戏!<Pokemon GO>目前仍旧吸引全球范围内大批玩家入驻,而这也使得该款游戏创 ...

  9. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

随机推荐

  1. BZOJ_1622_[Usaco2008_Open]_Word_Power_名字的能量_(字符匹配_暴力)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1622 给出多个文本串和模式串,求每个文本串中有多少模式串. 分析 直接暴力... #inclu ...

  2. apache开源项目-- NiFi

    Apache NiFi 是一个易于使用.功能强大而且可靠的数据处理和分发系统.Apache NiFi 是为数据流设计.它支持高度可配置的指示图的数据路由.转换和系统中介逻辑. 架构: 集群管理器: 主 ...

  3. codeforces 652D Nested Segments 离散化+树状数组

    题意:给你若干个区间,询问每个区间包含几个其它区间 分析:区间范围比较大,然后离散化,按右端点排序,每次更新树状数组中的区间左端点,查询区间和 注:(都是套路) #include<cstdio& ...

  4. Cocos2d-x ios 下http请求的另一种实现

    简单描述下需求:游戏要加入事件log,比如玩家升到10级:创建角色:或是,触发这些事件后要求客户端忘后台抛送一条log信息.一般情况下,我们可以直接使用cocos自带的HttpClient(底层用li ...

  5. java常见机试题目(1)

    好久没写博客了,今天重新开始,发现自己学习的知识很糙,就是知道,也能说出来,但是很多知识点不清晰,不深入,所以呢,写个博客总结一些程序,理清概念. 1java中大小写字母转化,在java中存在api ...

  6. Specular light 计算

    Specular lighting is most commonly used to give light reflection off of metallic surfaces such as mi ...

  7. c++学习_1

    最近重新捧起了<Effective c++>,其中味道又有不同,这里记录之... 这篇文章记录一下public继承的知识点... (1)public继承的意义 该继承方式是代表is-a(是 ...

  8. Linux内核结构分析与移植

    Linux内核主要的5个部分是:进程调度,内存管理,虚拟文件系统,网络接口,进程通信. 这5个部分之间的关系如下: (1)进程调度部分负责控制进程对CPU的访问. (2)内存管理允许多个进程安全地共享 ...

  9. 初探WebService

    写博客也是一件非常费时的事儿啊,之前配置服务器和客户端的Oracle数据库搞了很久,搞定之后懒的记录,现在想想如果让我再配一次,估计又要花很长时间了. 所以把做过的东西整理整理记录下来还是很有必要的, ...

  10. win7 下恢复“经典任务栏”/“快速启动栏”,关闭“窗口自动最大化” -摘自网络

    1.自动放大窗口 鼠标把窗口拖到屏幕边缘时,win7会自做聪明的把窗口放大,有时候这个很烦人. 解决办法: 运行“REGEDIT”打开注册表,找到 “HKEY_CURRENT_USER\Control ...