文档章节

python封装安卓查找元素方法V1.0

henni_719
 henni_719
发布于 2017/07/21 08:53
字数 767
阅读 25
收藏 0
#coding=utf8
from time import sleep
from appium import webdriver
import os
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
    
)

class appDriver():
    def __init__(self,version=6.0):
        try:
            self.desired_caps = {}
            self.desired_caps ['platformName'] = 'Android'
            self.desired_caps ['platformVersion'] =version
            self.desired_caps ['deviceName'] ='PE-UL00'
            self.desired_caps ['app'] = PATH('../APK/xmlay.apk')
            self.appdriver= webdriver.Remote('http://localhost:4723/wd/hub',  self.desired_caps )
        except Exception,e:
            print "Driver Error:",e 
                
    #根据“控件text属性的内容”构造出UiSelector对象
    def app_find_element_by_text(self,text):    
        try:   
            item='new UiSelector().text('+"\""+text+"\""+')'
            #进行费时装换,如果不进行格式这步格式转换,会出现HTTP错误
            item="%s" %(item) 
            element=self.appdriver.find_element_by_android_uiautomator(item)
            return element
            self.appdriver.f
        except Exception,e:
            print "By Text Error:",e
              
    #根据“控件text属性包含的内容”构造出UiSelector对象   
    def app_find_elements_by_textContains(self,text):
        try:   
            item='new UiSelector().textContains'+"("+text+")"
            item="%s" %(item) 
            element=self.appdriver.find_elements_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By textContains Error:",e
            
    #根据“控件text属性正则表达式的内容”构造出UiSelector对象       
    def app_find_elements_by_textMatches(self,text):
        try:   
            item='new UiSelector().textMatches'+"("+text+")"
            item="%s" %(item) 
            element=self.appdriver.find_elements_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By textMatches Error:",e
            
    #根据“控件text属性开始的内容”构造出UiSelector对象       
    def app_find_elements_by_textStartsWith(self,text):
        try:   
            item='new UiSelector().textStartsWith'+"("+text+")"
            item="%s" %(item) 
            element=self.appdriver.find_elements_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By resourceId Error:",e
            
    #根据“控件content-desc属性的内容”构造出UiSelector对象     
    def app_find_element_by_description(self,text):
        try:   
            item='new UiSelector().description'+"("+text+")"
            item="%s" %(item) 
            element=self.appdriver.find_element_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By description Error:",e
            
    #根据“控件content-desc属性包含的内容”构造出UiSelector对象     
    def app_find_elements_by_descriptionContains(self,text):
        try:   
            item='new UiSelector().descriptionContains'+"("+text+")"
            item="%s" %(item) 
            element=self.appdriver.find_elements_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By descriptionContains Error:",e
    
    #根据“控件content-desc属性正则表达式的内容”构造出UiSelector对象     
    def app_find_elements_by_descriptionMatches(self,text):
        try:   
            item='new UiSelector().descriptionMatches'+"("+text+")"
            item="%s" %(item) 
            element=self.appdriver.find_elements_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By descriptionMatches Error:",e
            
    #根据“控件content-desc属性正则表达式的内容”构造出UiSelector对象     
    def app_find_elements_by_descriptionStartsWith(self,text):
        try:   
            item='new UiSelector().descriptionStartsWith'+"("+text+")"
            item="%s" %(item) 
            element=self.appdriver.find_elements_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By descriptionStartsWith Error:",e
            
    #根据资源resource-id获取对象
    def app_find_element_by_resourceId(self,resourceid):
        try:   
            item='new UiSelector().resourceId'+"("+resourceid+")"
            item="%s" %(item) 
            element=self.appdriver.find_element_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By Text Error:",e
     
    #根据资源根据资源resource-id的正则表达式获取对象
    def app_find_elements_by_resourceIdMatches(self,resourceid):
        try:   
            item='new UiSelector().resourceIdMatches'+"("+resourceid+")"
            item="%s" %(item) 
            element=self.appdriver.find_elements_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By resourceIdMatches Error:",e
            
    #根据资源根据资源class的正则表达式获取对象
    def app_find_element_by_className(self,className):
        try:   
            item='new UiSelector().className'+"("+className+")"
            item="%s" %(item) 
            element=self.appdriver.find_element_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By resourceIdMatches Error:",e
            
    #根据资源根据资源index的正则表达式获取对象
    def app_find_element_by_index(self,index):
        try:   
            item='new UiSelector().index'+"("+index+")"
            #
            item="%s" %(item) 
            element=self.appdriver.find_element_by_android_uiautomator(item)
            return element
        except Exception,e:
            print "By index Error:",e
    def quitApp(self):
        self.appdriver.quit()
                   
    
        
def test():    
    app=appDriver()
    try:
            sleep(5)
            el =app.app_find_element_by_text('允许')
            if el:
                el.click() 
    except Exception,e:
            print e
        #
    try:
            #拨打电话和管理同话
            sleep(5)
            el = app.app_find_element_by_text("禁止后不再询问")
            if el:
                el.click() 
            sleep(5)
            el = app.app_find_element_by_text("始终允许")
            if el:
                el.click() 
    except Exception,e:
            print e
        #访问SD卡     
    try:
            sleep(5)
            el = app.app_find_element_by_text("禁止后不再询问")
            if el:
                el.click()       
            sleep(5)
            el = app.app_find_element_by_text("始终允许")
            if el:
                el.click() 
    except Exception,e:
            print e
        
        #使用此设备的位置信息
    try:
            sleep(5)
            el = app.app_find_element_by_text("禁止后不再询问")
            if el:
                el.click()       
            sleep(5)
            el = app.app_find_element_by_text("始终允许")
            if el:
                el.click() 
    except Exception,e:
            print e   
            
    app.quitApp()
    
if __name__=="__main__":
    test()

© 著作权归作者所有

henni_719
粉丝 2
博文 466
码字总数 343938
作品 0
信阳
QA/测试工程师
私信 提问
App的selenium,Appium爬App!

Appium是一个跨平台移动端自动化测试工具,可以非常便捷地为iOS和Android平台创建自动化测试用例。它可以模拟App内部的各种操作,如点击、滑动、文本输入等,只要我们手工操作的动作Appium都...

chbsxni
2018/10/15
118
0
使用Python开发Android应用程序(1):在手机上配置Python运行环境

本节目录: 1.下载和安装 Scripting Layer for Android (SL4A) 2.下载和安装 Python for android 3.第一个HelloWorld程序 1.下载和安装 Scripting Layer for Android (SL4A) Scripting Layer......

无鸯
2011/09/22
9K
2
Appium自动化测试系列2- 写一个Python测试脚本来测试一下YY语音

我们在《Appium自动化测试系列1-Appium环境的安装和配置》里已经搭好了Appium的基本环境,这一章,我们就来真刀真枪使用一下Appium, 看看Appium是如果来实现自动化测试的。在写测试脚本之前,...

冬吃萝卜
2015/01/27
38.5K
3
android-async-http使用例子

android-async-http是一个强大的第三方开源网络请求库, 官网源码:https://github.com/loopj/android-async-http 官网教程:http://loopj.com/android-async-http/ 这个网络请求库是基于Apa...

penngo
2015/08/05
1K
0
Python自动抢红包,超详细教程,再也不会错过微信红包了!

目录:0 引言1 环境2 需求分析3 前置准备4 抢红包流程回顾5 代码梳理6 后记 0 引言 提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个前提条件:手机需要r...

上海小胖
06/11
85
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部