一、安装

源码地址:

https://github.com/xiaocong/uiautomator#basic-api-usages

①下载zip包,解压到本地目录下

②进入对应目录下,执行

$sudo python setup.py install 

命令行提示uiautomator安装成功,现在可以开始用python编写uiautomator脚本了~~

二、使用

https://github.com/xiaocong/uiautomator#basic-api-usages

作者提供了所有API的解释说明,可直接查询使用。

还有个PPT,PPT地址:

http://xiaocong.github.io/slides/android-uiautomator-and-python/#/main

以下是在具体操作TV的过程中使用到的API,记录一下 ~~~~

#coding:utf-8
import time
from uiautomator import device as d
d.press.enter()time.sleep(5)
print(d(className="android.widget.FrameLayout").child(resourceId="com.stv.launcher:id/metro_space").child_by_instance("", className="android.view.View").count)
print (d(className="android.widget.FrameLayout").child(resourceId="com.stv.launcher:id/metro_space", className="android.support.v4.view.ViewPager").count)
print (d(className="android.widget.FrameLayout").child(resourceId="com.stv.launcher:id/metro_space", className="android.support.v4.view.ViewPager")[0].info)
print (d(className="android.widget.FrameLayout").child(resourceId="com.stv.launcher:id/metro_space", className="android.support.v4.view.ViewPager")[1].info)
print (d(className="android.view.View").count)
print (d(className="android.view.View")[0].info)
print (d(className="android.view.View")[1].info)
print (d(className="android.widget.FrameLayout").child(resourceId="com.stv.launcher:id/metro_space").child(index=2).count)
print (d(text="热点聚焦").info)
d(text="播放记录").click()
print (d.exists(className="android.widget.FrameLayout"))
d.dump("home.xml")
print (d(resourceId="com.letv.android.tv.letvlive:id/title",instance=0).text)
d.click(1100,850)

三、在TV测试使用过程中遇到的问题及局限性

还是比较方便,基本的UI操作基本都能覆盖。但使用起来还是不够得心应手。

1.TV上的click操作和手机上不同,手机上可直接实现点击操作,但TV上的click操作首先实现的是焦点移动,再次click或者pressEnter才实现点击进入操作;但TV上某些APP并未支持click移动焦点操作,只支持模拟遥控器输入实现上下左右移动;

用Java实现的时候,采用的方法是:模拟遥控器上下左右移动直到找到所需控件,然后再进行操作。但python未找到API可定位当前控件是否focused,无法实现该功能。(或许作者的初衷也只是方便手机使用,毕竟API中也提供了大量缩放、滑动等操作,这些操作更适用于手机设备)
 
2.定位到元素,想打印出控件info,TV桌面经常重启,导致运行timeout 。 这个问题使用java的时候未出现过,目前无法定位python在查询控件信息并显示出来的过程中执行了什么操作又或者是桌面自身BUG? 待定。。
 

python-UiAutomator学习&使用的更多相关文章

  1. python+appium学习总结

    经过了这个月的学习,今天终于完成了公司APP系统的自动化的脚本的编写. 通过单元测试框架UNITTEST,进行脚本的连跑,本来还想把测试数据统一写到EXCEL表格内,实现脚本与数据的分离. 后来发现增 ...

  2. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  3. 60分钟Python快速学习(给发哥一个交代)

    60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...

  4. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

  5. python爬虫学习 —— 总目录

    开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...

  6. Python正则表达式学习摘要及资料

    摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...

  7. python 线程学习

    彩照 一.学习[1] # -*- coding: utf-8 -*- import time import thread def timer(no, interval): cnt = 0 while ...

  8. Openstack python api 学习文档 api创建虚拟机

    Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...

  9. !!对python列表学习整理列表及数组详细介绍

    1.Python的数组分三种类型:(详细见 http://blog.sina.com.cn/s/blog_6b783cbd0100q2ba.html) (1) list 普通的链表,初始化后可以通过特 ...

  10. Python实战:Python爬虫学习教程,获取电影排行榜

    Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习 ...

随机推荐

  1. 简单了解pytorch的forward

    import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torch.autogra ...

  2. viewstate?

    用于存放数据,可永久保存,存放在页面的隐藏控件里      支持string,integer,array,boolean,ArrayList,hashtable类型,使用viewstate会增加页面h ...

  3. ES6自我总结笔记(阮一峰ES6入门)

    [let和const命令] 1.var的作用域是函数体内,不是块级作用域 2.let是更完美的var,let的变量的作用是块级作用域 3.let声明的全局变量不是全局对象属性,不可以通过window. ...

  4. ImportError: No module named MySQLdb问题的解决

    今天在windows上撸python代码,遇到ImportError: No module named MySQLdb的问题,遂赶紧pip install mysql-python,结果还是不行,查看 ...

  5. pytbull:入侵检测/预防系统测试框架 (转)

    pytbull:入侵检测/预防系统测试框架 或许当你安装了 IDS/IPS(入侵检测/预防系统)之后就感觉系统安全无忧了,但如何确信?答案是测试.pytbull 是使用 Python 开发而成的 ID ...

  6. 设计模式学习心得<抽象工厂模式 Abstract Factory>

    抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在抽 ...

  7. Flink官方文档/介绍/教程/用例

    https://flink.apache.org/ 使用谷歌浏览器进入官网后,点击页面右键,使用谷歌翻译,翻译准确率很高: 常用部分:

  8. lamp环境搭建(apache安装,mysql安装,php安装)

    1.卸载系统内置的LAMP环境 1)卸载httpd服务(内置Apache) ① 使用rpm指令查询安装的httpd服务 ② 卸载httpd服务 如果出现以上提示,代表系统默认不允许我们卸载软件,使用强 ...

  9. spring深入学习(五)-----spring dao、事务管理

    访问数据库基本是所有java web项目必备的,不论是oracle.mysql,或者是nosql,肯定需要和数据库打交道.一开始学java的时候,肯定是以jdbc为基础,如下: private sta ...

  10. 第38章:MongoDB-集群--Replica Sets(副本集)---多机的搭建

    ①机器环境 182.48.115.236    master-node(主节点) 182.48.115.237    slave-node1(从节点) 182.48.115.238    slave- ...