運行命令行安裝:html
pip install --pre facebook-wda
或者使用pycharm中,Preferences->Project->Project Interpreter->【+】(加號), 搜索:facebook-wda,並安裝python
舉個栗子,頁面元素定位,以下圖,class、name一一展現:ios
經過「ideviceinstaller -l
」或者其餘工具查找到APP軟件的bundleIdgit
$ 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.github
痛苦了大半天,終於找到了解決辦法:macos
參考:《IOS 執行ideviceinstaller -l ,結果報錯Could not connect to lockdownd. Exiting.》瀏覽器
上代碼:session
#!/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()
運行成功!!!!app
以前作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