1. 程式人生 > >【Mac + Python3.6 + facebook-wda】之IOS自動化(二):安裝facebook-wda庫並編寫簡易自動化測試腳本

【Mac + Python3.6 + facebook-wda】之IOS自動化(二):安裝facebook-wda庫並編寫簡易自動化測試腳本

以及 應用 hot cit you ins dfa 查看端口 介紹

上一篇介紹完如何安裝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 -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

上代碼:

#!/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自動化測試》

後續facebook-wda自動化框架介紹請參照github上的地址:https://github.com/openatx/facebook-wda

【Mac + Python3.6 + facebook-wda】之IOS自動化(二):安裝facebook-wda庫並編寫簡易自動化測試腳本