在利用 uiautomator2 进行元素定位,生成UI的测试代码时,对于一些特殊场景有时候不好进行判断和进行用例设计。

场景1. 判断元素是否存在,来进行不同的操作。

s = self.d(resourceId="com..plus:id/iot_txt_home_name", text=u"立即登录", className="android.widget.TextView")

if len(s) == 0:

print '元素未找到,执行退出操作'

time.sleep(1)

else:

print "-----开始执行登录操作-----"

self.d(resourceId="com..plus:id/iot_txt_home_name").click()

根据这个元素的定位,来利用len方法得到它是否存在。if else 就可以解决。针对不同的元素存在情况来解决执行那种步骤。

场景2.存在多种场景,通过元素的存在性来进行不同处理。

def update_Invoice(self, types):

"""

根据发票类型来进行判断

"""

self.d(resourceId="com..plus:id/iv_edit_invoice", className="android.widget.ImageView").click()

for i in range(0, 10):

print i

time.sleep(2)

s = self.d(text=types)

if len(s) != 0:

if types == '税号': # 判断税号就是电子发票

time.sleep(1)

self.d(resourceId="com..plus:id/et_tax_no").set_text(

"421125888882" + str(random.randint(2222, 3333)))

time.sleep(1)

self.d.press('back')

self.d(text=u'完成').click()

break

elif types == '手机号': # 判断手机号,就是个人发票

self.d(resourceId="com..plus:id/et_phone_no").set_text(

"1389983" + str(random.randint(2222, 3333)))

time.sleep(1)

self.d(text=u'完成').click()

break

# 判断开户银行就是确认为企业增值税

elif types == '开户银行':

self.d(resourceId="com..plus:id/et_address").set_text("福田区")

self.d.press('back')

self.d(text=u'完成').click()

break

else:

print '找不到手机号元素,继续循环'

time.sleep(1)

self.d.press('back')

time.sleep(1)

self.d(resourceId="com..plus:id/iv_edit_invoice", className="android.widget.ImageView",

instance=i + 1).click()

这是一个编辑发票的场景,因为每次点开编辑按钮不知道点开的东西,是属于哪种发票类型。所以通过循环的方式,调这个函数时,就给定要编辑哪种类型的发票,从而执行哪种循环

每次通过点击这个编辑按钮,进入发票的编辑页面,那么可以通过这个页面存在的特殊字段来决定他是属于什么类型的发票。从而解决我们的问题。

从以上循环可以得出三个不同的场景,

个人发票是 有手机号这个字段的,那么types就是==‘手机号’

企业发票 是通过税号这个字段  那么types==‘税号’

增值税是通过开户银行这个字段 那么types==‘开户银行’

一开始进入发票的这个页面,需要进行一次点击的才能进行下面的for循环,而找不到我们需要的types就进入到了 else里面 ,所以需要进行 back、然后进行点击

但是这个写法存在一个疑问,就是10次循环都跑完了,页面没有进行下拉(往上滑动) 还是找不到我们需要的元素咋办。没有做异常处理。

场景3. 怎么对app进行截图

因为当对app进行UI 页面检查时,我们是需要对它进行截图,因为只能通过元素的存在性来判断页面是否正常,有点片面,所以需要进行截图保存下来,每次用例跑完之后,人工看一下页面截图。

里面有两个参数,filename是要自己填的,中文也可以,filepath给了一个默认路径,需要自己加,我的路径是当前目录上一级目录的image/Member 这样

特殊注意,当采用python2进行写时,需要对中文名字进行decode

场景4:

滑动,屏幕往上滑动

self.d(scrollable=True).scroll(steps=5)

滑动,屏幕向下滑动

self.d(scrollable=False).scroll.to(text='精装保修') # 滑动到指定位置

简言之就是根据  scrollable等于true 或者false来判断上下

场景5:针对对多个页面进行截图

利用d(text=i).click()的方式

python ui自动化_python-UI自动化相关推荐

  1. python自动化_Python报表自动化

    01-报表自动化 要做报表自动化,我们需要考虑清楚3个问题​. Q1,什么是报表自动化? Q2,​什么样的内容适合进行报表自动化? Q3,​如何实现报表自动化? 第一个问题,什么是报表自动化呢?之前算 ...

  2. 怎么用python自动注册_python selenium自动化(二)自动化注册流程

    需求:使用python selenium来自动测试一个网站注册的流程. 假设这个网站的注册流程分为三步,需要提供比较多的信息: 在这个流程里面,需要用户填入信息.在下拉菜单中选择.选择单选的radio ...

  3. 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)

    python接口自动化一(设计一款自己的接口自动化框架) 一.起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest.当接口数量不怎么多时还好, ...

  4. python 获取窗口句柄_Python如何自动化哄女朋友

    众所周知,哄女朋友开心是世界性的难题,那么该如何解决呢?或许可以尝试借助Python来实现自动化操作! 当女朋友说自己不舒服的时候,作为一个老实人当然是跟她讲多喝热水啦,但讲一遍多喝热水显然不足以显示 ...

  5. python接收弹幕_Python爬虫自动化爬取b站实时弹幕实例方法

    最近央视新闻记者王冰冰以清除可爱和专业的新闻业务水平深受众多网友喜爱,b站也有很多up主剪辑了关于王冰冰的视频.我们都是知道b站是一个弹幕网站,那你知道如何爬取b站实时弹幕吗?本文以王冰冰视频弹幕为例 ...

  6. python chromium 自动化_Python Chromium自动化

    运行Py2.py --disable-quic --enable-tcp-fast-open --disable-gpu-compositing --ppapi-flash-path = / usr ...

  7. python selenium自动化_python selenium自动化之-环境搭建

    安装python和pip上述文章有介绍,在这里不在赘述.直接安装seleinum pip3 install selenium 安装完成以后, pip3 show selenium 显示 Name: s ...

  8. python 接口自动化测试_python接口自动化测试之接口数据依赖

    作者:泰斯特test 链接:https://juejin.im/post/5cc11f6be51d45401f566d14 在做自动化测试时,经常会对一整套业务流程进行一组接口上的测试,这时候接口之间 ...

  9. python怎么写接口自动化_python接口自动化 小结

    requests 发送http请求类型:get.post.put.delete.head get 参数:params 值:字典格式 嵌套列表 array数组 import requests from ...

  10. python前端接口_Python接口自动化——Web接口

    1.2.1 web接口的概念 这里用一个浏览器调试工具捕捉课程管理页面请求作为例子: 当请求页面时,服务器会返回资源,将协议看做是路的话,http可以看做高速公路,soap看做铁路传输的数据有html ...

最新文章

  1. MySQL数据类型--------浮点类型实战
  2. windows CPU性能监控命令
  3. 华清远见java考试题_Java面试题,你能答对几个?
  4. 折纸机器人的步骤图解_儿童节特辑丨为你精选二十款超好玩的折纸玩具,这么多总有你的菜!...
  5. 反序列化工具_JBOSS反序列化漏洞
  6. Redis中的键值过期操作
  7. python下路径问题及模型存储
  8. 苹果手机长截屏_发现一个手机必备软件
  9. GPU VS FPGA对比
  10. 8、Azkaban高频面试题
  11. 《场景革命》读书笔记
  12. 对 云寻觅贴吧(http://tieba.yunxunmi.com/)的简要分析
  13. BZOJ_4698_Sdoi2008 Sandy的卡片_后缀数组+单调队列+双指针
  14. Live Love(思维)
  15. 运用简单的HTML、CSS建立一个音乐网站模板
  16. JFreeChart图形开发包学习笔记
  17. Leslie--Chueng项目服务端、小程序的本地部署操作教程
  18. iOS日常开发之常用单词、名词注释
  19. 2019第九届中国测绘地理信息技术装备博览会
  20. onlyoffice 回调传参数_OnlyOffice 部署与使用

热门文章

  1. JavaScript学习总结(10)——实用JS代码大全
  2. 老弟教你用CSS和JS实现曾经风靡一时的微信打飞机游戏
  3. 纪念 C语言之父 丹尼斯·里奇 逝世11周年:他发明了计算机世界的钢筋水泥!...
  4. MySQL数据库设计-案例
  5. vs番茄助手的方便功能和便捷快捷键介绍
  6. wordpress主题_ripro美化子主题_虎造子主题集成后台美化包v2.0
  7. Java 文件上传与下载
  8. scratch中实现画笔功能
  9. 错误: 找不到或无法加载主类 Demo
  10. Hello~CSND