2018年学习的Appium,2019年接触ATX,虽然ATX仅支持Python,但是我一直都是用的Python。
PS:也有大神写出了Java版本的ATX,需要的小伙伴自行查看:
https://testerhome.com/hu_qingen
一、 架构区别
Appium: 使用**WebDriver协议**驱动iOS,Android和Windows应用程序。
Appium架构ATX:是在手机上运行了一个http rpc服务atx-agent,将uiautomator2中的功能开放出来,然后再将这些http接口封装成Python库。
ATX架构二、安装区别
Appium需下载安装:
Appium Desktop, Java,AndroidSDK,Appium server, Appium-Python-Client
安装过程繁琐复杂,之后把手机接到电脑上,appium会自动把各种程序安装到手机上。
ATX需下载安装:
adb,uiautomator2
安装adb: 只下载adb压缩包去解压即可:
链接:https://pan.baidu.com/s/1SKu24yyShwg16lyIupO5VA提取码:ih0i
安装完成后执行命令adb version查看版本,验证是否安装成功。
安装uiautomator命令:pip install --pre -U uiautomator2
三、Appium desktop与ATX weditor
Appium需要构造一个desiredCapabilities:
ATX无需配置这些文件,必需的字段只有一个设备的序列号。其他的都是可选的。对于是否启动应用给用户提供了的选择权,将其翻译为完整的atx代码为:
import uiautomator2asu2
d=u2.connect("cff37bce3")
d.set_fastinput_ime(True)
s=d.session("com.netease.cloudmusic")
这里省略了appActivity,因为atx会自动解析出来相应的appActivity。fastinput_ime是专门为自动化定制的输入法,支持中文的输入,和一些特殊的指令如搜索,清空。
d.session函数对应于appium的session机制,每次运行相关代码的时候都会先检测一下应用是否存活。
四、控件的选择和操作
Appium常用定位元素的方法为find_element_by_xpath,find_element_by_id,find_element_by_text
一种常见的写法为:
# 设置元素的查找时间10s
driver.implicitly_wait(10)
element = driver.find_element_by_text("Settings")
if element:
element.click()
ATX通常来说不推荐用xpath,因为要dump所有的hierarchy,速度比较慢。推荐用的时候各种查询条件混合一起使用。典型的用法为:
d(className="android.widget.Button",textContains="登录").click()
# using xpath
d.xpath('//android.widget.Button[contains(@text, "登录")]').click()
参考链接 TesterHome:https://testerhome.com/topics/14880?locale=zh-TW
网友评论