python uiautomator2遍历listview_Python 自动化,Appium 凭什么使用 UiAutomator2?

2、打开闲鱼 APP

调用上面 device 对象中app_start()方法,传入应用的包名作为参数可以打开应用

需要注意的是,方法中的第二个参数如果传入 True,可以冷启动 App,默认值为 False

# 打开应用

device.app_start(PACKAGE_NAME, stop=True)

3、点击搜索栏进入搜索界面

ee23ff9b4c2a90b0dd3749c7e2107374.png

首先,全局设置一个隐式等待,保证查找元素的时候避免因为卡顿、网络导致的异常

# 隐式等待20s,保证控件加载完成

device.implicitly_wait(20)

然后,通过WEditor定位到搜索入口控件的基本信息

d4a137c93af0ee5d6a5af4c4bdd10762.png

常用的 UiAutomator2 定位方式有 6 种,分别是:

ID 定位

Text 文本定位

Description 定位

ClassName 定位

Xpath 定位

组合定位

例如:

# 常用的6种定位方式

# 方式一:ID定位

d(resourceId=元素ID).click()

# 方式二:Text文本定位

d(text="公众号:AirPython").click()

# 方式三:Description值定位

d(description="AirPython").click()

# 方式四:ClassName定位

d(className="android.widget.TextView").click()

# 方式五:Xpath定位

d.xpath("//*[@content-desc='AirPython']")

# 方式六:组合定位

d(className="android.widget.ListView", resourceId=元素ID)

需要指出的是,当界面属性值不唯一的时候,组合定位就显得很实用

本例直接使用 ID 去找到元素,然后执行点击操作,跳转到搜索界面

# 点击到搜索页面

device(resourceId="com.taobao.idlefish:id/search_bg_img_front",).click()

4、搜索

UiAutomator2 中提供了send_keys()方法,用于向输入框中设置文本

注意:参数 clear 如果设置为 True,则在输入内容之前,会先清空输入框,默认值为 False

# 输入内容

device.send_keys("Python", clear=True)

# 点击搜索按钮

device(text="搜索").click()

5、滑动

UiAutomator2 提供了两个方法用于滑动界面,分别是:

swipe_ext( 滑动方向 )

swipe( 开始 x 轴,开始 y 轴,结束 x 轴,结束 y 轴值,滑动时间 )

经过测试发现,滑动操作,swipe_ext() 使用效果不稳定,建议使用 swipe() 函数

for i in range(5):

print('滑动一次')

swipe_custom(device, 0.5, 0.8, 0.5, 0.2, 1.2)

另外,为了保证兼容不同分辨率的设备,建议通过屏幕百分比自定义滑动方法

def swipe_custom(device, start_x_percent, start_y_percent, end_x_percent, end_y_percent, during=1.0, interval=1):

"""

自定义滑动,适配性更高

:param device:

:param start_x_percent:

:param start_y_percent:

:param end_x_percent:

:param end_y_percent:

:param during:

:return:

"""

# 获取屏幕的宽、高度

width, height = device.window_size()

device.swipe(start_x_percent * width, start_y_percent * height, end_x_percent * width, end_y_percent * height,

during)

if interval > 0:

sleep(interval)

6、关闭应用

在完成自动化操作后,就可以调用app_stop()方法强制关闭应用

# 停止App

device.app_stop(PACKAGE_NAME)

当然,可以在每次操作完,使用 UiAutomator2 提供的方法app_clear()清除 App 数据

# 清除App数据

# device.app_clear(PACKAGE_NAME)

5.最后

通过上面的实例,我们发现 UiAutomator2 相比 Appium,语法更简洁易懂,代码量也少了很多

但是由于 Uiautomator2 仅适用于 Android 端,Appium 拥有多语言、跨平台的特性,企业级自动化一般会选择后者

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值