Appium初步使用3:调试备忘录

Appium入门学习过程需要大量的实践,这里以一个具体的应用为例,简述一下我在实践过程中的经验:

  • 手机:荣耀20 Pro
  • 应用:备忘录(华为手机自带)
  • 调试方式:实体机无线调试
  • 元素定位工具:uiautomatorviewer(安卓sdk自带)

实现的功能非常简单:新增一条待办事项并保存。

1. 代码
# -*-coding:utf-8-*-
from appium import webdriver

server = 'http://localhost:4723/wd/hub'
desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Honor',
    'appPackage': 'com.example.android.notepad',
    'appActivity': '.NotePadActivity',
    'noReset': True,
    'unicodeKeyboard': True,
    'resetKeyboard': True
}

driver = webdriver.Remote(server, desired_caps)
# 点击待办
# driver.find_element_by_name('待办').click() #新版appium已经不支持by name定位,换xpath吧
# driver.find_element_by_xpath('//*[@text = "待办"]').click() #没生效,可能是text无法点击,换ImageView
driver.find_element_by_xpath('//*[@resource-id = "androidhwext:id/content" and @text = "待办"]/parent::*/preceding-sibling::*[1]').click()
# 点击添加按钮
driver.find_element_by_id('com.example.android.notepad:id/fab_add').click()
# 输入文本
# driver.find_element_by_id('com.example.android.notepad:id/text_todo').send_keys('test')
driver.find_element_by_id('com.example.android.notepad:id/text_todo').send_keys('测试')
# 保存
driver.find_element_by_id('com.example.android.notepad:id/save_todo').click()
2. 应用界面
3. 经验总结
  1. 对于实体机调试来说,我更喜欢无线调试,方法请参考博文《adb无线调试手机》
  2. 从我短暂的使用经验来看,uiautomatorviewer定位元素比Appium Inspector要准一点,所以我主要用uiautomatorviewer。只是有时候uiautomatorviewer会和appium冲突,导致获取设备快照失败,此时关闭appium即可,分析完元素定位后再打开appium跑代码
  3. send_keys默认无法输入中文,需要在Desired Capabilities加入两个参数,详见博文《Appium中send_keys输入中文》
  4. 新版appium已经不支持by name定位,建议换xpath定位
  5. “待办”列表页的这个按钮的元素定位花了不少时间,最后是用XPath Axes(轴)的方式解决了,但是太长了,如果哪位朋友有更好的方法欢迎评论或私信我!
  6. 为防输入的文字乱码,建议在Python代码头部加上# -*-coding:utf-8-*-之类的编码声明

参考

  1. XPath Axes(轴)
  2. 解决python中文乱码的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值