1、Atx的安装

安装adb
使用以下命令安装atx最新版
pip install --pre -U uiautomator2 
手机接到电脑上之后,需要先运行一下命令:
python -m uiautomator2 init将需要的程序部署到手机上(一次即可)

2、Atx Weditor

ATX Weditor是一个python库,命令行安装 
pip install --pre weditor , 命令行启动python -m weditor(PS: windows可以双击weditor快捷方式),会自动打开一个网页,用网页作为其Inspector

3.连接设备

appium需要构造一个desiredCapabilities,其中的udid字段通常对应设备的序列号。
以一个常见的配置文件为例

desired_caps = {
# 平台 android
'platformName': 'Android',
# 手机设备名称
'deviceName': '2d869e6',
# android系统的版本号
'platformVersion': '',
# 安装包路径
# 'app': 'F:\download\XXX.apk',
# apk包名
'appPackage': 'com.tencent.mm',
# apk的launcherActivity
'appActivity': '.ui.LauncherUI',
# 默认neReset为false,不要在会话前重置应用状态,每次启动都跟第一次启动一样,变为true则不一样
# 会话前不重置应用状态 默认是false
'noReset': True,
# 'appWaitActivity':'com.tencent.mm.plugin.webview.ui.tools.WebViewUI',
# 下面两行代码是为了屏蔽软件盘以至于可以输入中文
'unicodeKeyboard': True, # 使用unicode编码方式发送字符串
# 'resetKeyboard': False, # 将键盘隐藏起来
# 在 Android 上,这也会在会话结束后自动清除被测应用
"fullReset": False,
'chromeOptions': {'androidProcess': 'com.tencent.mm.plugin.webview.ui.tools.WebViewUI'}
# "automationName": "uiautomator2"
# newCommandTimeout设置为更大的值
# "newCommandTimeout":
}

atx是没有这类配置文件,必需的字段只有一个就是设备的序列号,这里用ip地址也可以。其他的都是可选的。对于是否启动应用给用户提供了的选择权。
atx代码为:

import uiautomator2 as u2
d = u2.connect("dgsdg")
d.set_fastinput_ime(True)
s = d.session("com.netease.cloudmusic")

感觉方便多了,fastinput_ime是专门为自动化定制的输入法,支持中文的输入,和一些特殊的指令如搜索,清空。
d.session函数对应于appium的session机制,每次运行相关代码的时候都会先检测一下应用是否存活。

注:atx连接的时候可以填手机的序列号或者ip地址。因为测试代码最终是与手机上的一个服务的atx-agent通信,所以也支持填写IP,但是需要运行代码的电脑跟手机在同一个网段。

4、控件的选择与操作

appium常用定位元素的方法为find_element_by_xpath, find_element_by_id, find_element_by_text
一种常见的写法为

driver.implicitly_wait() # 设置元素的查找时间10s
element = driver.find_element_by_text("Settings")
if element:
element.click()
转化成atx代码为 d(text="Settings").click(timeout=)
atx不推荐用xpath,因为要dump所有的hierarchy,速度比较慢。推荐用的时候各种查询条件混合一起使用。
典型的用法为 d(className="android.widget.Button", textContains="登录").click()
# using xpath
d.xpath('//android.widget.Button[contains(@text, "登录")]').click()

5、弹框的处理

现在高版本的手机基本都会有一些权限确认窗口或者安装确认框。如果处理不好会非常影响自动化。

看到一个帖子说是可以配置一下就可以解决弹框了(PS:应该是只针对iOS的) https://testerhome.com/topics/14513

driver.switch_to.alert.accept()
atx的方法更自由一点,你可以自由选择处理什么内容的弹窗,以及怎么处理。一个常见的自动点击安装按钮的方法 d.watcher("INSTALL").when(text="安装").click()
d.watcher("NEXT").when(text="下一步").click()
d.watchers.watched = True

官方文档:https://github.com/openatx/uiautomator2
参考资料:https://testerhome.com/topics/14880

ATX 学习 (二)-Atx Weditor的更多相关文章

  1. 【ATX学习大纲】【ATX基于uiautomator2+Python学习】之Android自动化

    github学习地址:https://github.com/openatx/uiautomator2 <_io.TextIOWrapper name='<stderr>' mode= ...

  2. emberjs学习二(ember-data和localstorage_adapter)

    emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...

  3. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  4. TweenMax动画库学习(二)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  5. Hbase深入学习(二) 安装hbase

    Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...

  6. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  7. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  8. Quartz学习--二 Hello Quartz! 和源码分析

    Quartz学习--二  Hello Quartz! 和源码分析 三.  Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...

  9. SpringCloud学习(二):微服务入门实战项目搭建

    一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...

随机推荐

  1. cb26a_c++_STL_算法_元素计数

    cb26a_c++_STL_算法_元素计数所有容器都可以使用countcount_if关联容器的等效成员函数,容器自己的成员函数速度较快1.set.count2.multiset.count3.map ...

  2. CRC16冗余循环检测计算器-好用。modbus RTU

    开始使用 http://cht.nahua.com.tw/index.php?url=http://cht.nahua.com.tw/software/crc16/&key=Modbus,%2 ...

  3. 如何从OutLook正确取得定期会议的时间?(待解决)

    背景: 用Microsoft.Office.Interop.Outlook取得日历项,然后根据业务要求筛选. 现象: 如果是定期会议,使用AppointmentItem.Start/End取得的是该定 ...

  4. springboot 2.X 集成redis

    在实际开发中,经常会引入redis中间件做缓存,这里介绍springboot2.X后如何配置redis 1 Maven中引入redis springboot官方通过spring-boot-autoco ...

  5. ODBC 常见数据源配置整理

    目录 1. 简介 1.1 ODBC和JDBC 1.2 ODBC配置工具 1.3 ODBC 数据源连接配置 2. MySQL 数据源配置 2.1 配置步骤 2.2 链接参数配置 3. SQLServer ...

  6. linuxshell编程之环境变量配置文件 Tony Linux系统工程师

    视频参考慕课网 如果修改了环境变量的配置文件,要使得修改的环境变量生效可以使用下面的两个命令 下面是点后面加上了一个空格然后再加上配置文件,这里一定要注意下 这里要注意和隐藏文件的区别: 在linux ...

  7. 05.DBUnit的使用

    相信做过单元测试的人都会对JUnit 非常的熟悉了,今天要介绍的DbUnit(http://dbunit.sourceforge.net/ ) 则是专门针对数据库测试的对JUnit 的一个扩展,它可以 ...

  8. 线程基础8-quene讲解

    PriorityBlockingQueue是一个基于优先级堆的无界的并发安全的优先级队列(FIFO),队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取 ...

  9. Python 简明教程 ---10,Python 列表

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 -- Nicklaus Wirth 目录 从这句话程序 = 算法 + ...

  10. 【差分】Tallest Cow

    题目 FJ's N(1≤N≤10,000) cows conveniently indexed 1..N are standing in a line. Each cow has a positive ...