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 字 ...
随机推荐
- IDL build
For Developers > Design Documents > IDL build 目录 1 Steps 2 GYP 3 Performance 3.1 Details ...
- ip代理池的爬虫编写、验证和维护
打算法比赛有点累,比赛之余写点小项目来提升一下工程能力.顺便陶冶一下情操 本来是想买一个服务器写个博客或者是弄个什么FQ的东西 最后刷知乎看到有一个很有意思的项目,就是维护一个「高可用低延迟的高匿IP ...
- ArchLinux 设置时间同步和硬件时间同步错误 No usable clock interface found
笔记本不知道怎么了,总是时间对不上 硬件时间也设置不了,只能时间同步了 手动时间同步 ntpdate即可,ntp服务器在这里用这两个就好了 cn.ntp.org.cn 或 edu.ntp.org.cn ...
- 软raid 实验
RAID0 条带卷 2+ 100% 读写速度快,不容错 RAID1 镜像卷 2 50% 读写速度一般,容错 RAID5 带奇偶校验的条带卷 3+ (n-1)/n 读写速度快,容错,允许坏一块盘 RAI ...
- CF245H Queries for Number of Palindromes(回文树)
题意翻译 题目描述 给你一个字符串s由小写字母组成,有q组询问,每组询问给你两个数,l和r,问在字符串区间l到r的字串中,包含多少回文串. 输入格式 第1行,给出s,s的长度小于5000 第2行给出q ...
- HDU 4309 Seikimatsu Occult Tonneru
Seikimatsu Occult Tonneru Time Limit: 6000ms Memory Limit: 32768KB This problem will be judged on HD ...
- Linux Sendfile 的优势
Sendfile 函数在两个文件描写叙述符之间直接传递数据(全然在内核中操作,传送),从而避免了内核缓冲区数据和用户缓冲区数据之间的拷贝,操作效率非常高,被称之为零拷贝. Sendfile 函数的定义 ...
- Spark修炼之道(高级篇)——Spark源代码阅读:第十二节 Spark SQL 处理流程分析
作者:周志湖 以下的代码演示了通过Case Class进行表Schema定义的样例: // sc is an existing SparkContext. val sqlContext = new o ...
- SQL大小写金额转换
--功能: 用于将小写的数值翻译成大写的字符串(支持到分,即小数点后两位) --入口参数:@decNum------数字型变量 --返回:字符串 --举例:select dbo.fn_ChnMoney ...
- Mark Sweep GC
目录 标记清除算法 标记阶段 深度优先于广度优先 清除阶段 分配 First-fit.Best-fit.Worst-fit三种分配策略 合并 优点 实现简单 与保守式GC算法兼容 缺点 碎片化 分配速 ...