一、搭建环境

  准备: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控件操作的更多相关文章

  1. ANDROID L——Material Design详解(UI控件)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...

  2. WinForm/Silverlight多线程编程中如何更新UI控件的值

    单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如果在一个新线程中这么 ...

  3. 富客户端 wpf, Winform 多线程更新UI控件

    前言 在富客户端的app中,如果在主线程中运行一些长时间的任务,那么应用程序的UI就不能正常相应.因为主线程要负责消息循环,相应鼠标等事件还有展现UI. 因此我们可以开启一个线程来格外处理需要长时间的 ...

  4. AppleWatch___学习笔记(二)UI布局和UI控件

    1.UI布局 直接开发,你会发现Apple Watch并不支持AutoLayout,WatchKit里有个类叫做WKInterfaceGroup,乍一看像是UIView,但是这货其实是用来布局的.从 ...

  5. Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

    最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下 1.UI控件与布局 常用的主要 ...

  6. Android4.0 -- UI控件之 Menu 菜单的的使用(三)

    上一讲 [Android 开发]:UI控件之 Menu 菜单的的使用(二) 我们讲解了创建上下文菜单的第一种使用方式:Creating a floating context menu [创建悬浮的上下 ...

  7. C#学习之在辅助线程中修改UI控件----invoke方法

    Invoke and BeginInvoke 转载地址:http://www.cnblogs.com/worldreason/archive/2008/06/09/1216127.html 在Invo ...

  8. 优化UI控件 【译】

    翻译自:https://unity3d.com/cn/learn/tutorials/topics/best-practices/optimizing-ui-controls?playlist=300 ...

  9. 面试题汇总--数据储存/应用程序/UI控件/客户端的安全性与框架处理。。。

    一 数据储存  1.如果后期需要增加数据库中的字段怎么实现,如果不使用 CoreData 呢?编写 SQL 语句来操作原来表中的字段1)增加表字段ALTER TABLE 表名 ADD COLUMN 字 ...

随机推荐

  1. DNA Sequence POJ - 2778 AC 自动机 矩阵乘法

    定义重载运算的时候一定要将矩阵初始化,因为这个调了一上午...... Code: #include<cstdio> #include<algorithm> #include&l ...

  2. ES6学习笔记(十六)async函数

    1.含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是什么?一句话,它就是 Generator 函数的语法糖,号称异步的终极解决方案. 前文有一个 Gen ...

  3. vue项目的环境变量

    关于项目中环境变量的总结 背景 项目环境一般分为开发环境,测试环境,线上环境 因为每个环境的接口域名.webpack 配置都是不同的,所以在打包构建时,我们需要区分这些环境,这时就用到了环境变量 在工 ...

  4. php如何openssl_encrypt加密解密

    最近在对接客户的CRM系统,获取令牌时,要用DES方式加密解密,由于之前没有搞错这种加密方式,经过请教了"百度"和"谷歌"两个老师后,结合了多篇文档内容后,终于 ...

  5. mac打包python3程序

    1. 下载安装py2app pip3 install py2app 2. 创建setup.py文件 py2applet --make-setup XXX.py 3. 发布应用 python3 setu ...

  6. 洛谷P1108 低价购买 (最长下降子序列方案数)(int,long long等 范围)

    这道题用n方的算法会很好做 我一开始想的是nlogn的算法求方案数, 然后没有什么想法(实际上也可以做,但是我太弱了)我们就可以根据转移方程来推方案数,只是把max改成加,很多动规题 都是这样,比如背 ...

  7. struts2登录后返回登录前的页面

    在Action中添加 String getUrl() { return ServletActionContext.getRequest().getHeader("referer") ...

  8. Objective-C学习笔记(十)——循环语句for和do-while的使用

    在OC中.除了while这样的循环方式外,还有另外for循环和do-while循环.它们在不同的业务逻辑下会有不同的作用.能够和C语言和Java对照着学习. (一)代码一: int main(int ...

  9. Unity multiplayer

    using UnityEngine; using System.Collections; public class multiplayer_Button : MonoBehaviour { void ...

  10. style="background-image: url(__HOMEPAGE__/views/IMJ2V2/images/banner2.jpg)"

    style="background-image: url(__HOMEPAGE__/views/IMJ2V2/images/banner2.jpg)" 一.问题 backgroun ...