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. new jup在新一代中存在

    1.灰度发布服务动态路由 动态配置路由规则,实现对调用流量的精确控制.可配置基于版本.IP.自定义标签等复杂的规则.2.服务鉴权示例2需求:服务 provider-demo 只允许来自 consume ...

  2. MongoDB快速入门教程 (4.3)

    4.3.Mongoose模块化 4.3.1.为什么要进行模块化拆分? 模块化拆分的目的是为了代码的复用,让整个项目的结构更加清晰,举个例子:当数据库中的集合变多的时候,例如有课程.订单.分类.教师等多 ...

  3. eclipse clone克隆github远程库工程到本地

    项目作者把项目push到github远程库,其他用户可以把项目克隆到本地: eclipse里的操作具体如下: File -> Import... 找到Git 选择 Project from Gi ...

  4. mackdown基础语法

    目录 前言 二.Markdown基本语法 前言 由于有些语法无法在博客园展示,推荐使用Typora解锁全套,下载地址:https://www.typora.io/ Markdown是一种可以使用普通文 ...

  5. sql多列排序

    从左到右依次排列,如果出现重复值,则按照右侧的排序规则进行排序: 例如:分数倒序排序,但是遇到重复值,则再按照class_id倒序排 例如:分数倒序排序,没有重复值,进行了正常的排序,则不再按照cla ...

  6. Layui的分页模块在网站中的应用

    制作网站的时候,有时候我们常常会被一些要求复杂的分页给困住,最后要么就是写一个简单的分页,要么就做成瀑布流的形式. 有了Layui之后,我认为开发人员多了一个选择,那就是尝试用Layui内置的分页模块 ...

  7. 每日一题 - 剑指 Offer 52. 两个链表的第一个公共节点

    题目信息 时间: 2019-07-03 题目链接:Leetcode tag: 单链表 难易程度:简单 题目描述: 输入两个链表,找出它们的第一个公共节点. 示例: A: a1 -> a2 \ - ...

  8. 每日一题 - 剑指 Offer 32 - II. 从上到下打印二叉树 II

    题目信息 时间: 2019-06-25 题目链接:Leetcode tag: 队列 BFS 难易程度:简单 题目描述: 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 示 ...

  9. 极致Web性能 —— SPA性能指南

    前言 前端框架时代,为开发体验.效率与页面性能带来,非常大的革命.大家纷纷拿起一系列打包工具(webpack/parcel etc.),配合一系列加载器快速搭建起一个 SPA 页面. SPA 应用带来 ...

  10. chrome本地调试跨域问题

    1.关闭chrome浏览器(全部) 我们可以通过使用chrome命令行启动参数来改变chrome浏览器的设置,具体的启动参数说明参考这篇介绍.https://code.google.com/p/xia ...