使用Python自动化测试iOS项目,ios如何自动化测试,WebDriverA


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

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

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

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

安装WebDriverAgent

从github上下载代码

1git 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
1pip install --pre facebook-wda

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

(先取消Touch ID安装App)

利用Safari跳转App在AppStore页面

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

下载App

1234567891011121314151617181920212223242526s = 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()

显示下载进度

1234567891011121314151617# 有个载入的过程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).valueif value is None:continuesys.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 ,运行测试

12345$ python Test_Demo.py点击重新下载等待下载完成已下载100%下载完成

小结

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

使用Python自动化测试iOS项目

评论关闭