ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Flutter-uiautomator2之自动化测试避坑(元素篇)

2021-12-14 13:31:27  阅读:505  来源: 互联网

标签:xpath 避坑 ele View id uiautomator2 view Flutter android


直接上需要注意的点

一、flutter开发的app一般不需要进行id定位

  1.最常用的元素定位是Description

  2.输入框定位是text

  这两个完全够用了

二、通过xpath进行Description定位时会遇到以下问题:

  1.python -m weditor调出weditor后可能会遇到这样的xpath

 

 

   这样的xpath会让你不得不使用resource-id进行定位,写出来的代码是这样的

              d.xpath('//[@resourceid="android:id/content"]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.widget.ImageView[1]/android.view.View[2]/android.view.View[1]/android.view.View[2]/android.view.View[1]/android.view.View[1]/android.view.View[4]')

  但事实上,通过这个resource-id定位的元素也是可以用Description进行定位的

  可以先用print(d.dump_hierarchy(True)),打印出当前页面的xml

  

 

   打印出了当前的“去登录”元素是可以使用Description进行定位

  比如:d(description="去登录")或者d.xpath(//*[@content-desc="去登录"])

  2.如果你的content-desc遇到了这样的符号:
---这代表的是flutter的换行符,你需要将其替换为‘\n’

三、 我的处理办法

  封装了一个方法,用来处理所有的description元素

  1.使用init方法,将d这个对象传入,可以方便后续做数据驱动时实例化对象

  2.将xml进行过滤,找到所有符合我们界面看到的元素,然后进行字符串拼装成xpath的参数

  3.最后可直接点击

  4.如果遇到了某种手机在对应步骤后表现可能不同,比如:小米手机键盘在输入后遮挡了下方元素,便可以使用return的false返回进行判断,多进行操作一步再次点击这个元素

class DescriptionClick(object):

def __init__(self, d, ele_id=0):
self.d = d
self.ele_id = ele_id

def click(self, ele_name):
elements_list = []
return_list = []
# 获取xml
ele_xml = self.d.dump_hierarchy(True)
# 正则表达式
page_re = re.compile(r'content-desc="(.*?)" checkable="')
# 获取匹配结果
ele_res = re.findall(page_re, ele_xml)
# 过滤空的元素,其他元素加入至elementsList
for i in ele_res:
if i == '':
continue
else:
elements_list.append(i)
# 将xml中的换行符替换为\n,并组合成xpath
for j in elements_list:
if j.startswith(ele_name):
xpath = '//*[@content-desc="' + str(j).replace('
', '\n') + '"]'
return_list.append(xpath)
# 直接点击这个xpath
try:
self.d.xpath(return_list[self.ele_id]).click()
except IndexError:
return False
结尾:最初拿到flutter开发的应用时,我人傻了,appium很多的方法在app中无法使用,比如sendkeys这些常用必须的方法
我翻了很久的论坛,发现使用uiautomator2可以解决以上的问题
这个过程中遇到的各种坑数不胜数
但也一一解决了,希望幸运的小伙伴看到这篇文章可以有所启发吧

标签:xpath,避坑,ele,View,id,uiautomator2,view,Flutter,android
来源: https://www.cnblogs.com/pp-caraway/p/15687458.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有