【Mac + Python3.6 + facebook-wda】之IOS自动化(二):安装facebook-wda库并编写简易自动化测试脚本,,上一篇介绍完如何安装


上一篇介绍完如何安装WDA,接下来开始正式安装开发库并编写自动化脚本。

目录:

一、安装facebook-wda库

二、通过WEditor定位元素

三、附录:学习资料

一、安装facebook-wda库

运行命令行安装:

pip install --pre facebook-wda

或者使用pycharm中,Preferences->Project->Project Interpreter->【+】(加号), 搜索:facebook-wda,并安装

技术分享图片

举个栗子,页面元素定位,如下图,class、name一一展示:

技术分享图片

通过“ideviceinstaller -l”或者其他工具查找到APP软件的bundleId

$ ideviceinstaller -lTotal: 5 appscom.ysr.scancode - 二维码扫描器 3com.apple.test.WebDriverAgentRunner-Runner - WebDriverAgentRunner-Runner 1com.sogou.sogouinput - 搜狗输入法 142709com.netease.cloudmusic - 网易云音乐 1044com.leqimea.recorderAudio - PP助手 10000

上代码:

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time    : 2018/10/16 11:42# @Author  : zc# @File    : test.pyimport unittestimport wdawda.DEBUG = False # default Falsewda.HTTP_TIMEOUT = 10.0 # default 60.0 secondsbundle_id = "com.chen.CityMineSafetyOne"  (通过上面获得)c = wda.Client(‘http://localhost:8100‘)# 启动应用s = c.session(bundle_id)class Test_safety(unittest.TestCase):    def setUp(self):        print("=======start!=======")        pass    def tearDown(self):        print("=======stop!=======")        pass    def test1(self):     # class、name定位参考网易图所示,这里只是举个栗子,并不是网易代码        s(name=‘home btn newtask‘,className=‘Button‘).tap()if __name__ == ‘__main__‘:    unittest.main()

运行成功!!!!

二、通过WEditor定位元素       返回目录

之前做uiautomator2-Android自动化时,用到了这个进行定位元素,facebook-wda-IOS自动化也可以通过这个进行定位元素。

首先,启动weditor

python -m weditor

有时候会报错:OSError: [Errno 48] Address already in use

提示您地址已经被占用,所以我们可以查看weditor的17310端口,看看哪些软件占用了此端口:

# 查看端口使用情况lsof -i tcp:17310COMMAND    PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAMEGoogle     396 zhan  156u  IPv6 0x9b9eee3e3dae5dfb      0t0  TCP localhost:58732->localhost:17310 (ESTABLISHED)python3.6 8244 zhan    4u  IPv6 0x9b9eee3e34507f3b      0t0  TCP *:17310 (LISTEN)# 其中谷歌和py3.6占用了端口,选择杀死进程kill 396kill 8244

接着再启动weditor,发现还是报错:

ModuleNotFoundError: No module named ‘atx‘

需要安装atx:

pip install atx==1.1.2.dev18
$ pip install atx==1.1.2.dev18Collecting atx==1.1.2.dev18  Downloading https://files.pythonhosted.org/packages/16/75/f47630ae898e61900f0c32165916330bce718aa048e4abd1ce8408cef9ff/atx-1.1.2.dev18-py3-none-any.whl (2.2MB)    100% |████████████████████████████████| 2.2MB 600kB/s Collecting imageio==1.5 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/e8/b7/8d78cb388c1aa8648c65601572fb4c50cc36f5eff6b22f0ec69ef0d63ecc/imageio-1.5.zip (3.3MB)    100% |████████████████████████████████| 3.3MB 444kB/s Requirement already satisfied: Pillow>=2.7.0 in /Users/zhan/.pyenv/versions/3.6.1/lib/python3.6/site-packages (from atx==1.1.2.dev18)Collecting PyYAML==3.11 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/75/5e/b84feba55e20f8da46ead76f14a3943c8cb722d40360702b2365b91dec00/PyYAML-3.11.tar.gz (248kB)    100% |████████████████████████████████| 256kB 3.7MB/s Collecting colorama==0.3.7 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/b7/8e/ddb32ddaabd431813e180ca224e844bab8ad42fbb47ee07553f0ec44cd86/colorama-0.3.7-py2.py3-none-any.whlCollecting numpy>=1.11.0 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/0a/2b/726b7d4e4ba844d4805c52b8e05299a5f49bc16c69ca0fa8e1964c0871fe/numpy-1.15.2-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (24.5MB)    100% |████████████████████████████████| 24.5MB 60kB/s Collecting tqdm==4.5.0 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/83/4f/50d87b628eeae681eb9b5217840a215808ce3cf42c0d72752be286b1bfdf/tqdm-4.5.0-py2.py3-none-any.whlCollecting facebook-wda==0.1.1.dev1 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/4b/01/fbe44ad81ef016f1cc4fb149ce684da1cff163464a6168a7b87c4bd4597d/facebook_wda-0.1.1.dev1-py3-none-any.whlRequirement already satisfied: requests>=2.9.1 in /Users/zhan/.pyenv/versions/3.6.1/lib/python3.6/site-packages (from atx==1.1.2.dev18)Collecting futures==3.0.5 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/55/db/97c1ca37edab586a1ae03d6892b6633d8eaa23b23ac40c7e5bbc55423c78/futures-3.0.5.tar.gzCollecting maproxy==0.0.12 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/2e/12/41e87a13b3e64373f73029ad1e826084afa64d4cdfa17baadc3ccde2ee02/maproxy-0.0.12.zipCollecting atx-uiautomator==0.2.12.dev6 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/42/40/bde514f5eb29d267cc06ab2bf890e972edf46345e24ebdae44d79b0f87e1/atx_uiautomator-0.2.12.dev6-py3-none-any.whl (2.9MB)    100% |████████████████████████████████| 2.9MB 514kB/s Collecting AxmlParserPY==0.0.2 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/38/2b/50f92036bd6d46cdb7b581f4a0a4c5c0081ccc1235e0db96b640ed0fdcba/AxmlParserPY-0.0.2.tar.gzRequirement already satisfied: tornado>=4.4 in /Users/zhan/.pyenv/versions/3.6.1/lib/python3.6/site-packages (from atx==1.1.2.dev18)Collecting aircv==1.4.5 (from atx==1.1.2.dev18)  Downloading https://files.pythonhosted.org/packages/66/5e/e58fd28a7a96e23a87cecf61f5d57acbae88812f22192afcbdbbb6015499/aircv-1.4.5.tar.gz (4.0MB)    100% |████████████████████████████████| 4.0MB 402kB/s Requirement already satisfied: six>=1.10.0 in /Users/zhan/.pyenv/versions/3.6.1/lib/python3.6/site-packages (from facebook-wda==0.1.1.dev1->atx==1.1.2.dev18)Requirement already satisfied: idna<2.8,>=2.5 in /Users/zhan/.pyenv/versions/3.6.1/lib/python3.6/site-packages (from requests>=2.9.1->atx==1.1.2.dev18)Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /Users/zhan/.pyenv/versions/3.6.1/lib/python3.6/site-packages (from requests>=2.9.1->atx==1.1.2.dev18)Requirement already satisfied: certifi>=2017.4.17 in /Users/zhan/.pyenv/versions/3.6.1/lib/python3.6/site-packages (from requests>=2.9.1->atx==1.1.2.dev18)Requirement already satisfied: urllib3<1.24,>=1.21.1 in /Users/zhan/.pyenv/versions/3.6.1/lib/python3.6/site-packages (from requests>=2.9.1->atx==1.1.2.dev18)Installing collected packages: imageio, PyYAML, colorama, numpy, tqdm, facebook-wda, futures, maproxy, atx-uiautomator, AxmlParserPY, aircv, atx  Running setup.py install for imageio ... done  Running setup.py install for PyYAML ... done  Found existing installation: facebook-wda 0.2.1    Uninstalling facebook-wda-0.2.1:      Successfully uninstalled facebook-wda-0.2.1  Running setup.py install for futures ... done  Running setup.py install for maproxy ... done  Running setup.py install for AxmlParserPY ... done  Running setup.py install for aircv ... doneSuccessfully installed AxmlParserPY-0.0.2 PyYAML-3.11 aircv-1.4.5 atx-1.1.2.dev18 atx-uiautomator-0.2.12.dev6 colorama-0.3.7 facebook-wda-0.1.1.dev1 futures-3.0.5 imageio-1.5 maproxy-0.0.12 numpy-1.15.2 tqdm-4.5.0You are using pip version 9.0.1, however version 18.1 is available.You should consider upgrading via the ‘pip install --upgrade pip‘ command.

在安装cv2,作用是读取图像相关的:

 pip install opencv-python

再次运行weditor,又发生错误:

from atx import ioskit
File "/Users/zhangc/.pyenv/versions/3.6.1/lib/python3.6/site-packages/atx/ioskit.py", line 199
print dev.screenshot(‘i.png‘)
^
SyntaxError: invalid syntax

语法错误,经过大神调试得知原来是,atx版本问题,升级atx版本。

# 查看pip下各个库的版本pip list# 得知atx (1.1.2.dev18)pip (9.0.1)# 升级pippip install --upgrade pip# 升级atxpip install -U atx# 再查看pip下各个库版本    Package       Version    --------------- -----------       atx           1.2.0      pip           18.1  # 最后再运行weditorpython -m weditor

weditor终于启动成功!!!!!

浏览器自动打开weditor,选择IOS,输入地址:http://localhost:8100,点击【Connect】连接,出现小绿叶??表示连接成功,再点击蓝色按钮【Reload】刷新如下:

技术分享图片

至此facebook-wda安装以及元素定位讲解到此为止。

三、附录:学习资料          返回目录

参考文章:

感谢:

codeskyblue的《使用 Python 库 facebook-wda 完成网易云音乐 iOS 客户端的自动化测试 (示例)》

wonderfei的《基于Facebook-WDA的iOS-UI自动化测试》

后续facebook-wda自动化框架介绍请参照github上的地址:https://github.com/openatx/facebook-wda

【Mac + Python3.6 + facebook-wda】之IOS自动化(二):安装facebook-wda库并编写简易自动化测试脚本

评论关闭