ATX ATX 支持 iOS10 手机测试 方法说明

codeskyblue · 2016年11月10日 · 最后由 jiangongzheng 回复于 2020年07月28日 · 4188 次阅读

前言

因为 AutomatorX 的知名度还是不怎么高,所以开始还是要简介一下这玩意是干什么用的。
一句话简单的说明下:做手机应用自动化测试的。

ATX 之前发表过很多的文章,关于如何使用 ATX 测试 iOS 应用可以参考这篇文章 ATX 系列 - 如何测试网易云音乐 (iOS 篇)

这篇文章说的是如何搞定 iOS10 的测试。

进入主题

因为 ATX 的 iOS 支持主要是依赖 facebook 开源的WebDriverAgent
所以只要 WDA(WebDriverAgent) 支持了 iOS10,就可以了。到目前为止 2016-11-09 这个 issue iOS10 issue on WDA 还在。
根据 issue 中的一些回复,大概了解到了,通过 wifi 直接连接手机是不行的。但是通过 USB 跟手机通信就可以正常工作。

USB 通信有很多方案,不过我最喜欢 iproxy,因为比较简单。

iproxy 的安装参考这篇文章 http://iphonedevwiki.net/index.php/SSH_Over_USB

安装完之后,测试一下

$ iproxy -h
usage: iproxy LOCAL_TCP_PORT DEVICE_TCP_PORT [UDID]

打开控制台,这样输入命令

$ iproxy 8100 8100
waiting for connection

命令执行完之后,访问本地的 localhost:8100,就直接转发到了手机的 8100 端口。

接下来演示一下怎么用 ATX 打开 iPhone 自带的计时器,开始然后退出

import atx

d = atx.connect("http://localhost:8100")
d.start_app("com.apple.mobiletimer")
d(text=u'计时器').click()
d(text=u'开始计时').click()
d(text=u'取消').click()
d.stop_app()

GIF 图我暂时就不制作了,自己去尝试吧。

遗留问题

另外还有两个遗留的问题。

  1. 横屏模式下坐标点击位置依然不对
  2. 真机测试貌似只能用 99 美元的开发者证书了,前段时间试了试普通账户已经不好使了

项目地址

http://github.com/NetEaseGame/AutomatorX 感兴趣的去 Star 一下项目。开发者的热情也需要鼓励的

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 26 条回复 时间 点赞

iproxy 又是一个黑科技呀

赞赞赞👍

—— 来自 TesterHome 官方 安卓客户端

天了噜, 普通账户已经不好使了么

赞,Macaca 也是用 iproxy 先临时处理了 https://testerhome.com/topics/6314

普通开发者账号是可以用的

匿名 #22 · 2017年01月03日

usage: iproxy LOCAL_TCP_PORT DEVICE_TCP_PORT [UDID] 我运行完这个命令后,一直显示的是 waiting for connection,有点搞不懂。。。然后 ip+ 端口还是连不上。。我确认我 udid 没有错。

#5 楼 @lrw3716740 出现 waiting for connection说明正常了,连接的地址应该是 http://localhost:8100

匿名 #9 · 2017年01月04日

#6 楼 @codeskyblue 对,主要是这句,iproxy 8100 8100 命令产生作用了, 没明白这句 iproxy LOCAL_TCP_PORT DEVICE_TCP_PORT [UDID] 的作用是什么,运行后也是提示 waiting for connection

#7 楼 @lrw3716740 直译过来就是等待连接

匿名 #9 · 2017年01月06日

#8 楼 @codeskyblue 谢谢,根据你们的指导已经解决了问题。

元素定位,如果按钮名字相同怎么定位

吴佳佳 回复

下标拉

codeskyblue 回复

我试试😀

@Lihuazhang 猜测这个 iOS10 上无法用 wifi 连接这个 bug 是因为苹果在国行版本中的"网络权限"功能导致, xcuitest 不被认为是程序因此无法被允许使用网络. 有认识苹果中国的人吗, 可以联系他们看看能否跟进这个问题
我自己使用 xcuitest 写段连接网络的代码, 提示 error: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline."
网络权限的问题可以参见这个文章http://www.cnblogs.com/fengmin/p/6116190.html)

匿名 #17 · 2017年07月05日

use iproxy 127.0.0.1 can connect iphone but ip address can't connect iphone
when i use webdriveragent,i excute iproxy 8100 8100,i can access 127.0.0.1:8100 but can't access 10.243.242.19:8100 10.243.242.19 is my ip.

国外友人吗?用 tcp 转发下,iproxy 默认只监听 localhost。或者也可以用用我写的一个专门处理这个问题的项目 wdaproxy

匿名 #15 · 2017年07月05日
codeskyblue 回复

yes,i will try your method,but iproxy can't do something for this condition?

我不知道

匿名 #19 · 2017年07月06日
codeskyblue 回复

curl: (7) Failed to connect to github-production-release-asset-2e65be.s3.amazonaws.com port 443: Operation timed out
Error: Failed to download resource "wdaproxy"

So, you are in China now. You need to know how to cross the GFW.

匿名 #20 · 2017年07月06日
codeskyblue 回复

if i loaded you project,how can i run it. ths.

匿名 #22 · 2017年07月27日

我手机上 webdriverAgent 启动了,用 iproxy 8100 8100,后。 访问电脑http://xxxxx:8100/inspector,打不开,有知道为什么的吗?我搞不明白,希望知道的能解答下,谢谢

我也遇到这个问题了,找到解决办法了吗

支持 flutter 吗

noshuai 回复

想问下这个问题,现在解决没有,我今天出现了一样的问题

noshuai 回复

想问下这个问题现在解决了吗?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册