python+appium 查找某个元素find_element()并click()点击,正向判断与反判断的方法封装
使用场景:
在自动化测试过程中,难免会用到反判断,包括异常情况的处理,比如:find_element_by_name('测试') 判断“测试”是否存在,存在则点击,不存在则执行其他条件。先看底层方法,之后将举例说明被封装方法的具体使用。
find_element(By.ID,value)
find_element(By.NAME,value)
find_element(By.TAG_NAME,value)
find_element(By.CLASS_NAME,value) 以上方法均可使用,具体可根据实际需要在我封装的find_Element中继续添加
底层方法介绍:
python安装目录\site-packages\selenium\webdriver\remote\webdriver.py中查找def find_element方法。如下:
def find_element(self, by=By.ID, value=None):
"""
'Private' method used by the find_element_by_* methods. :Usage:
Use the corresponding find_element_by_* instead of this. :rtype: WebElement
"""
if self.w3c:
if by == By.ID:
by = By.CSS_SELECTOR
value = '[id="%s"]' % value
elif by == By.TAG_NAME:
by = By.CSS_SELECTOR
elif by == By.CLASS_NAME:
by = By.CSS_SELECTOR
value = ".%s" % value
elif by == By.NAME:
by = By.CSS_SELECTOR
value = '[name="%s"]' % value
return self.execute(Command.FIND_ELEMENT, {
'using': by,
'value': value})['value']
方法的封装:
def find_Element(self,type,value):
'''
method explain:查找某个元素
parameter explain: 【type】 取值的类型包括:id\name\class_name... 【value】根据type的类型给值
Usage:
device.find_Element('name',"我的認證")
'''
logging.info("执行--------find_Element-------方法")
try:
if type == 'id':
try:
return self.driver.find_element(By.ID,value) #查找ID元素,存在则直接返回
except Exception,e: #appium存在元素则直接返回,不存在则跑出异常,因此必须用异常来处理不存在元素的情况
logging.info("未找到%type--%value"%(type,value))
return False #查找ID元素,不存在则返回False
elif type == 'name':
try:
return self.driver.find_element(By.NAME,value)
except Exception,e:
logging.info("未找到%type--%value"%(type,value))
return False
except:
logging.warn("此处已抛异常---------------find_Element")
self.take_screenShot("find_Element")
'''
take_screenShot()自己封装的截图方法,如果你没封装就可以删除掉此句话,或者看链接将此方法添加到你封装py文
件中:http://www.cnblogs.com/syw20170419/p/8280017.html
'''
assert 'find_Element' def click(self):
'''
method explain:查找某个元素
parameter explain: 【type】 取值的类型 【value】根据type的类型给值
Undertake method:device.find_Element(type,value)
Usage:
name_value == device.find_Element(type = 'name',value="我的認證")
name_value.click()
'''
self.find_Element(type,self.value).click()
举例说明被封装方法的使用:
测试步骤:打开短信,点击“新建”创建一条短信并发送
具体的封装方法在测试中调用如下:
def creat_Message(self):
logging.info("start creat message")
'''创建短信'''
sleep(5)
new = self.device.find_Element(type = 'name',value="新建") #调用封装的find_Element方法
if new: #判断新建存在,则执行点击
new.click()
elif new == False: #判断新建不存在,则打印log
logging.error( '新建不存在')
python+appium 查找某个元素find_element()并click()点击,正向判断与反判断的方法封装的更多相关文章
- selenium获取元素后用click()点击没有作用,用Keys.ENTER就可以成功
selenium获取元素后用click()点击没有作用,用键盘输入enter(Keys.ENTER)就可以成功 #coding = utf-8 from selenium import webdriv ...
- Python+Appium 查找 toast 方法的封装
使用场景:在操作应用时常见toast弹框,通过toast弹框信息的获取判断当前的某个操作是否成功 引用的包:from selenium.webdriver.support import expecte ...
- Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法
在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...
- python+Appium自动化:元素等待时间
元素等待时间 为什么要设置等待时间呢?主要是因为界面加载时,为了防止元素还未出现影响后续的操作. 主要有三种方式:强制(线性)等待.隐式等待.显式等待 适用于appium和selenium 强制(线性 ...
- 使用webview查找元素,appium查找web页面元素
9 webview查找元素 9.1 webview 简介 WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面.它使用的内核是webkit引擎,4.4版本之后,直接使用 ...
- Appium+python自动化3-定位元素
3.1常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个我只 ...
- Appium python自动化测试系列之元素的定位(六)
6.1 常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个 ...
- python appium笔记(二):元素定位
#这里的示例是用android来说明的,xpath应该是通用的,resource-id不太清楚,没配过IOS的环境 #环境配置和一些参数的意思不清楚可以看我上一篇python appium笔记(一) ...
- Python Appium 元素定位方法简单介绍
Python Appium 元素定位 常用的八种定位方法(与selenium通用) # id定位 driver.find_element_by_id() # name定位 driver.find_ ...
随机推荐
- Ribbon整合Eureka组件,以实现负载均衡
1整体框架的说明 在本案例的框架里,我们将配置一个Eureka服务器,搭建三个提供相同服务的Eureka服务提供者,同时在Eureka服务调用者里引入Ribbon组件,这样,当有多个url向服务调用者 ...
- mysql 带条件的sum/count 使用技巧
本测试只是简单测试,其用途不在于代替count函数配合where函数进行聚合计算,而是在复杂查询中在sum/count中加入条件,一次性求出不同条件下的聚合结果. 1.插入测试数据如图 2.sum计算 ...
- Day9 进程理论 开启进程的两种方式 多进程实现并发套接字 join方法 Process对象的其他属性或者方法 守护进程 操作系统介绍
操作系统简介(转自林海峰老师博客介绍) #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理.调度进程,并且将多个进程对硬件的竞争变得有序 #二 多道技术: 1.产生背景: ...
- Android两级导航菜单栏的实现--FragmentTabHost结合ViewPager与Android 开源项目PagerSlidingTabStrip
http://www.cnblogs.com/aademeng/articles/6119737.html 转载注:简单总结一下,外层Tab用TabHost,类层Tab用Viepager+Framen ...
- Django和Angular.js模板标签冲突的解决方式
参考文章:http://yanhua365.lofter.com/post/b417f_1f0361 http://stackoverflow.com/questions/8302928/angula ...
- ecshop 修改记录20150710
ecshop 修改记录20150710 1:去掉头部TITLE部分的ECSHOP演示站 Powered by ecshop 前台部分:在后台商店设置 - 商店标题修改 后者打开includes/lib ...
- 学习Vue.js之vue移动端框架到底哪家强
官网:https://cn.vuejs.org/. 转载:http://www.cnblogs.com/8899man/p/6514212.html Weex 2016年4月21日,阿里巴巴在Qcon ...
- 分布式爬虫框架XXL-CRAWLER
<分布式爬虫框架XXL-CRAWLER> 一.简介 1.1 概述 XXL-CRAWLER 是一个分布式爬虫框架.一行代码开发一个分布式爬虫,拥有"多线程.异步.IP动态代理.分布 ...
- 利用webmagic获取天猫评论
引言 爬取商品信息 爬取商品评论 数据清洗 1. 引言 现代网页往往其HTML只有基本结构,而数据是通过AJAX或其他方法获取后填充,这样的模式对爬虫有一定阻碍,但是熟练以后获取并不困难,本文以爬取天 ...
- linux监控系统的状态
1.命令w的第一行和uptime或者用upload2.system load averages 表示单位时间短内活动的进程数3.查看cpu的个数和核数processor.physical id 4.v ...