码迷,mamicode.com
首页 > 移动开发 > 详细

使用Python自动化测试iOS项目

时间:2018-01-29 17:40:32      阅读:1193      评论:0      收藏:0      [点我收藏+]

标签:hub   保存   使用   touch   client   support   过程   python库   100%   

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项目

标签:hub   保存   使用   touch   client   support   过程   python库   100%   

原文地址:https://www.cnblogs.com/KiVen2015/p/8378149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!