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


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

安装facebook-wda库

  • 二、通过WEditor定位元素

  • 三、附录:学习资料

  • 一、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()

    运行成功!!!!

    返回目录

    之前做时,用到了这个进行定位元素,非常方便,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