上一篇介紹完如何安裝WDA,接下來開始正式安裝開發庫並編寫自動化腳本。
目錄:
一、安裝facebook-wda庫
運行命令行安裝:
pip install --pre facebook-wda
或者使用pycharm中,Preferences->Project->Project Interpreter->【+】(加號), 搜索:facebook-wda,並安裝
舉個栗子,頁面元素定位,如下圖,class、name一一展示:
通過“ideviceinstaller -l
”或者其他工具查找到APP軟件的bundleId
$ ideviceinstaller -l Total: 5 apps com.ysr.scancode - 二維碼掃描器 3 com.apple.test.WebDriverAgentRunner-Runner - WebDriverAgentRunner-Runner 1 com.sogou.sogouinput - 搜狗輸入法 142709 com.netease.cloudmusic - 網易雲音樂 1044 com.leqimea.recorderAudio - PP助手 10000
但是,會一直報錯Could not connect to lockdownd. Exiting.
痛苦了大半天,終於找到了解決辦法:
參考:《IOS 執行ideviceinstaller -l ,結果報錯Could not connect to lockdownd. Exiting.》
上代碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/10/16 11:42 # @Author : zc # @File : test.py import unittest import wda wda.DEBUG = False # default False wda.HTTP_TIMEOUT = 10.0 # default 60.0 seconds bundle_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:17310 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Google 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 396 kill 8244
接着再啟動weditor,發現還是報錯:
ModuleNotFoundError: No module named 'atx'
需要安裝atx:
pip install atx==1.1.2.dev18
$ pip install atx==1.1.2.dev18 Collecting 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.whl Collecting 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.whl Collecting 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.whl Requirement 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.gz Collecting maproxy==0.0.12 (from atx==1.1.2.dev18) Downloading https://files.pythonhosted.org/packages/2e/12/41e87a13b3e64373f73029ad1e826084afa64d4cdfa17baadc3ccde2ee02/maproxy-0.0.12.zip Collecting 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.gz Requirement 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 ... done Successfully 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.0 You 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) # 升級pip pip install --upgrade pip # 升級atx pip install -U atx # 再查看pip下各個庫版本 Package Version --------------- ----------- atx 1.2.0 pip 18.1 # 最后再運行weditor python -m weditor
weditor終於啟動成功!!!!!
瀏覽器自動打開weditor,選擇IOS,輸入地址:http://localhost:8100,點擊【Connect】連接,出現小綠葉🍀表示連接成功,再點擊藍色按鈕【Reload】刷新如下:
至此facebook-wda安裝以及元素定位講解到此為止。
=======擴展=======
坐標點的獲取:
三、附錄:學習資料 返回目錄
參考文章:
感謝:
codeskyblue 的《使用 Python 庫 facebook-wda 完成網易雲音樂 iOS 客戶端的自動化測試 (示例)》
wonderfei 的《基於Facebook-WDA的iOS-UI自動化測試》
ReinhardHuang的:《由跳一跳外掛說起——初識 iOS 自動化測試框架 WebDriverAgent》
后續facebook-wda自動化框架介紹請參照github上的地址:https://github.com/openatx/facebook-wda