python +uiautomator 安卓UI控件操作
一、搭建环境
准备:win7、JDK、androidSDK(adt-bundle-windows-x86_64-20140702\sdk)、Appium、安卓模拟器(真机也可以),可以到这个地址下载https://pan.baidu.com/s/1NV5ncqRel4bkGoVzLyXuIg 提取码:6bst
1.安装Android模拟器: TianTian模拟器
2.安装Appium服务器
3.安装JDK
4.如JDK安装在C盘,androidSDK放在C盘则按下面进行配置环境:
增加变量(系统变量处新建):JAVA_HOME 值为: C:\Program Files\Java\jdk1.8.0_51
增加变量(系统变量处新建):JRE_HOME 值为: C:\Program Files\Java\jre1.8.0_51
增加变量(系统变量处新建):ANDROID_HOME 值为:C:\adt-bundle-windows-x86_64-20140702\sdk
添加PATH环境:C:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools;
C:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W;
5.开启安卓模拟器或者电脑连接手机(要保证已经安装了驱动,开启调试)
6.cmd命令行下查看
adb devices 查看连接的安卓设备
adb connect 127.0.0.1:6555 连接天天模拟器
如下表是连接成功

7.经过以上步骤说明已经成功和手机连接了(模拟器和真机都可以)
二、安装Appium的Python客户端库 cmd命令:pip install Appium-Python-Client
三、写python代码
from appium import webdriver
from time import sleep
import unittest
import warnings #用于屏蔽信息 class AndroidTest(unittest.TestCase):
"""
Android测试用例
""" def setUp(self):
warnings.simplefilter('ignore', ResourceWarning)#屏蔽警告信息
desired_cap = {}
desired_cap['platformName'] = 'Android' #操作系统类型
desired_cap['deviceName'] = 'Android Emulator'#设备名称,随意也可以 # 方法1:指定打开的APP,针对没有安装被测APP
# desired_cap['app'] = r"E:\share\App\apks\ApiDemos-debug.apk"
# 方法2:指定打开的APP,针对已经安装了APP
desired_cap['appPackage'] = 'io.appium.android.apis'#App的包名
desired_cap['appActivity'] = "io.appium.android.apis.ApiDemos"#打开的UI界面
#4723为Appium服务器的端口号,需要根据实际设定
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_cap)
self.driver.implicitly_wait(10) #定位元素超时时间 def tearDown(self):
sleep(2)
#关闭APP
self.driver.quit() def test1(self):
# 根据class和text属性
# el = self.driver.find_element_by_xpath("//android.widget.TextView[@text='Animation']")
#定位控件
el = self.driver.find_element_by_xpath("//android.widget.TextView[@text='Animation' and @index='1']") # 获得控件的文本
print(el.text)
print(el.get_attribute("text"))
python +uiautomator 安卓UI控件操作的更多相关文章
- ANDROID L——Material Design详解(UI控件)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...
- WinForm/Silverlight多线程编程中如何更新UI控件的值
单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...
- 富客户端 wpf, Winform 多线程更新UI控件
前言 在富客户端的app中,如果在主线程中运行一些长时间的任务,那么应用程序的UI就不能正常相应.因为主线程要负责消息循环,相应鼠标等事件还有展现UI. 因此我们可以开启一个线程来格外处理需要长时间的 ...
- AppleWatch___学习笔记(二)UI布局和UI控件
1.UI布局 直接开发,你会发现Apple Watch并不支持AutoLayout,WatchKit里有个类叫做WKInterfaceGroup,乍一看像是UIView,但是这货其实是用来布局的.从 ...
- Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件
最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下 1.UI控件与布局 常用的主要 ...
- Android4.0 -- UI控件之 Menu 菜单的的使用(三)
上一讲 [Android 开发]:UI控件之 Menu 菜单的的使用(二) 我们讲解了创建上下文菜单的第一种使用方式:Creating a floating context menu [创建悬浮的上下 ...
- C#学习之在辅助线程中修改UI控件----invoke方法
Invoke and BeginInvoke 转载地址:http://www.cnblogs.com/worldreason/archive/2008/06/09/1216127.html 在Invo ...
- 优化UI控件 【译】
翻译自:https://unity3d.com/cn/learn/tutorials/topics/best-practices/optimizing-ui-controls?playlist=300 ...
- 面试题汇总--数据储存/应用程序/UI控件/客户端的安全性与框架处理。。。
一 数据储存 1.如果后期需要增加数据库中的字段怎么实现,如果不使用 CoreData 呢?编写 SQL 语句来操作原来表中的字段1)增加表字段ALTER TABLE 表名 ADD COLUMN 字 ...
随机推荐
- 深入理解 sudo 与 su 之间的区别
深入理解 sudo 与 su 之间的区别 作者: Himanshu Arora 译者: LCTT zhb127 在早前的一篇文章中,我们深入讨论了 sudo 命令的相关内容.同时,在该文章的末尾有提到 ...
- php重新编译,gd扩展支持jpeg文件
晚上写东西的时候,报了一个错误: Call to undefined function imagecreatefromjpeg() 没有开启 jpeg 支持?原来是默认安装的 gd 扩展默认不支持 j ...
- 包及常用模块(time、datetime、random、sys)
什么是包?‘ #官网解释 Packages are a way of structuring Python’s module namespace by using “dotted module nam ...
- [USACO07MAR]每月的费用Monthly Expense
题目:POJ3273.洛谷P2884. 题目大意:有n个数,要分成m份,每份的和要尽可能小,求这个情况下和最大的一份的和. 解题思路:二分答案,对每个答案进行贪心判断,如果最后得出份数>m,则说 ...
- 紫书 例题 10-27 UVa 10214(欧拉函数)
只看一个象限简化问题,最后答案乘4+4 象限里面枚举x, 在当前这条固定的平行于y轴的直线中 分成长度为x的一段段.符合题目要求的点gcd(x,y) = 1 那么第一段1<= y <= x ...
- C语言移位
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1;i = i << 2; //把i里的值左移2位 也就是说,1的2进制是00 ...
- ios 绘图,绘制坐标系,画坐标系
先来看个效果: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...
- VC:当前不会命中断点,还没有为该文档载入不论什么符号
VS2013中设置的断点无效:"当前不会命中断点,还没有为该文档载入不论什么符号".问题主要出在没有生成调试信息.解决方法例如以下: (1)项目-〉属性-〉配置属性-〉C/C++- ...
- Ubuntu常见报错及解决方式汇总
作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.co ...
- oc数据类型分类
OC数据类型能够分为 基本类型.构造类型.指针类型.空类型 基本类型可分为 整型.字符型.枚举型.浮点型(float类型.double类型) 构造类型可分为 数组类型.结构体类型.公用体类型 指针类型 ...