使用Python自动化测试iOS项目

Posted kiven2015

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python自动化测试iOS项目相关的知识,希望对你有一定的参考价值。

WebDriverAgent在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备。你可以启动、杀死应用,点击、滚动视图,或者确定页面展示是否正确。

项目地址:https://github.com/facebook/WebDriverAgent

facebook-wda这个Python库,通过直接构造HTTP请求直接跟WebDriverAgent通信。

项目地址:https://github.com/openatx/facebook-wda

安装WebDriverAgent

从github上下载代码

1
git clone https://github.com/facebook/WebDriverAgent

安装依赖

1
./Scripts/bootstrap.sh

WebDriverAgent使用的是 Carthage 来管理依赖的,所以你需要安装Carthage环境。

配置好证书,然后Command+U运行,不是Command+R

如果想用USB通信的话看这里 https://github.com/facebook/WebDriverAgent/wiki/USB-support

正常启动后效果如图:

技术分享图片

输出你手机ip地址说明正常启动了。

访问 http://ip:8100/inspector 可以看到App的UI图层,方便写测试脚本。

技术分享图片

安装facebook-wda
1
pip install --pre facebook-wda

小试牛刀:完成App自动下载,安装

(先取消Touch ID安装App)

利用Safari跳转App在AppStore页面

1
2
3
4
5
6
7
app_url = ‘https://itunes.apple.com/cn/app/id425349261?mt=8‘
c = wda.Client(‘http://ip:8100‘)
# 打开safari
s = c.session(‘com.apple.mobilesafari‘, [‘-u‘, app_url])
e = s(name=u‘打开‘).get(timeout=10, raise_error=False)
e.tap()
time.sleep(5)

下载App

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
s = c.session()
if s(className=‘Button‘, name=u‘获取‘).wait(timeout=10, raise_error=False):
# 以前没有下载过
print(‘点击获取‘)
e = s(className=‘Button‘, name=u‘获取‘).get(timeout=2, raise_error=False)
e.tap()
# 等待显示安装
e = s(className=‘Button‘, name=u‘安装‘).get(timeout=30, raise_error=False)
if e:
e.tap()
print(‘是否需要输入密码‘)
if s(className="SecureTextField").wait(timeout=5, raise_error=False):
print(‘输入密码‘)
e = s(className="SecureTextField").get(timeout=5, raise_error=False)
e.set_text("password")
print(‘点击登录‘)
e = s(className=‘Button‘, name=u‘登录‘).get(timeout=5, raise_error=False)
e.tap()
else:
print(‘不需要输入密码‘)
elif s(className=‘Button‘, name=u‘重新下载‘).wait(timeout=5, raise_error=False):
print(‘点击重新下载‘)
e = s(className=‘Button‘, name=u‘重新下载‘).get(timeout=10, raise_error=False)
e.tap()
else:
exit()

显示下载进度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 有个载入的过程
while s(className=‘Button‘, name=u‘正在载入‘).wait(timeout=3, raise_error=False):
pass
 
# 隔3秒检查有没有下载完成
print(‘等待下载完成‘)
while s(className=‘Button‘, name=u‘正在下载‘).wait(timeout=3, raise_error=False):
value = s(className=‘Button‘, name=u‘正在下载‘).get(timeout=3, raise_error=False).value
if value is None:
continue
sys.stdout.write("已下载%s\r" % value.encode("utf-8"))
sys.stdout.flush()
time.sleep(1)
sys.stdout.write("已下载100%\r")
sys.stdout.flush()
# 下载完成
print(‘\n下载完成‘)

保存文件为 Test_Demo.py ,运行测试

1
2
3
4
5
$ python Test_Demo.py
点击重新下载
等待下载完成
已下载100%
下载完成

小结

通过使用WebDriverAgentfacebook-wda能测试任何App(也可以制作简单的App辅助工具,例如最近比较火的跳一跳)。

以上是关于使用Python自动化测试iOS项目的主要内容,如果未能解决你的问题,请参考以下文章

源码:自己用Python写的iOS项目自动打包脚本

测试新人如何使用Python代码封装自动化测试的用例?

Flask 编写http接口api及接口自动化测试

iOS项目质量管理自动化

tox python项目虚拟环境管理自动化测试&&构建工具

如何使用UIAutomation进行iOS自动化测试