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

上一篇介紹完如何安裝WDA,接下來開始正式安裝開發庫並編寫自動化腳本。

目錄: 

 

 

1、安裝facebook-wda庫

運行命令行安裝: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

2、經過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安裝以及元素定位講解到此爲止。

=======擴展=======

座標點的獲取:

 

3、附錄:學習資料          返回目錄

參考文章:

感謝:

codeskyblue 的《使用 Python 庫 facebook-wda 完成網易雲音樂 iOS 客戶端的自動化測試 (示例)

wonderfei 的《基於Facebook-WDA的iOS-UI自動化測試

ReinhardHuang的:《由跳一跳外掛提及——初識 iOS 自動化測試框架 WebDriverAgent

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

相關文章
相關標籤/搜索