最近在配置iOS自动化环境,配置起来比较麻烦,总有各种问题,所以稍微总结一下

iOS的自动化环境都是在mac上执行,如果有windows本,装mac虚拟机吧

文件安装及下载顺序按文中顺序即可(多个并行下载安装可能会冲突)

一、环境配置

iOS自动化网上教程都有大致方向:
1.下载nodejs(官网下载即可)

        验证node:node -v

        验证npm:npm -v

2.下载JDK(官网下载即可)

        验证:java -version,出现版本号即可,没有版本号说明没装上

3.下载Xcode

4.下载Homebrew(npm下载即可)

        npm下载后直接执行会找不到brew,这是因为电脑没找到brew路径

        下载完成后要根据brew提示依次输入并执行,这样brew就算配置完了
        echo >> /Users/mac/.zprofile

        echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/mac/.zprofile

        eval "$(/opt/homebrew/bin/brew shellenv)"

        验证下载:brew -v

        更新:brew update

        下载中途可能需要输入密码以及回车,需要注意下

5.下载libimobiledevice:brew install --HEAD libimobiledevice

6.下载idevicesinstaller:brew install ideviceinstaller

7.下载ios-deploy:sudo npm install -g ios-deploy

        安装过程中很可能会报这个问题

       

        这个问题本质就是之前下载过xcode,但系统没找到对应路径

        在通过 sudo xcode-select --switch /Applications/Xcode.app 重新设置路径

     

        再次运行 sudo npm install -g ios-deploy就能成功了

        如果还有问题可能需要通过brew方式进行: brew install ios-deploy

8.指定xcode command line tools版本(下载homebrew会自动下载command line tools)

        指定版本在进入xcode后左上角xcode setting,location中

        

9.安装Carthage:brew install carthage

        检查:carthage version

10.安装appium:sudo npm install -g appium(不用sudo可能会有报错)

        一般来说这种方式下载都是最新版本(目前3.0.2),也有可能是2.x版本,需要 appium -v看下。如果有需要,按需升级

11.安装appium-doctor:sudo npm install -g appium-doctor

        用于检测appium运行环境是否正常

12.查看iOS环境配置命令:appium-doctor --ios

        上图中红色区域为必要环境,没有红色x即可(iOS自动化安装Android的内容可以不用管)

13.安装WebDriverAgent,这里要说的是网上都说appium自带WebDriverAgent,但总会有倒霉蛋在教程文档中找不到对应路径,翻官方文档能看到,这里的关键是因为appium现在不自带WebDriverAgent,需要手动下载,从appium的官网中下载一份WebDriverAgent:
        下载:点击code,并下载zip文件

        解压后的文件夹名称为WebDriverAgent-master(无伤大雅,里面有要用的文件)

14.笔者当时收到将文件夹存放在 usr/local/lib/node_modules/appium/node_modules 目录下,此时文件夹还需要其它调整

        1.路径中最后一个node_modules文件夹要添加当前用户并开启 读与写 权限(不然WebDriverAgent可能在写入后丢失)

        2.WebDriverAgent-master也要开启 读与写 权限

15.安装完成后需要在appium-webdriveragent文件夹下执行一下命令:

        mkdir -p Resources/WebDriverAgent.bundle

16.进入WebDriverAgent文件夹并在xcode中打开

17.到这里理论上WebDriverAgent就完成了,但笔者在后来的实际的操作过程中发现额外安装了xcuitest及其驱动appium-xcuitest-driver,目前不清楚这个内容对后续运行会有哪些帮助

        xcuitest安装:appium driver install xcuitest

        appium-xcuitest-driver安装:appium driver install appium-xcuitest-driver

        以上两行代码是笔者后来补充的,不过由于隔得时间比较久所以这两个安装命令可能会有错误,如有疏漏请大家指出

二、WebDriverAgent在xcode中的配置

1.左上角xcode -> settings -> Apple Accounts,添加账户(apple邮箱)

2.配置好后,点击账户进入账户页面,在账户中配置证书

3.点击下载证书以及证书管理

4.添加证书

5.在WebDriverAgent中配置账号

        (配置1)

        (配置2)

6.点击Product -> scheme -> WebDriverAgentRunner,开启测试,不然Test是置灰的

7.连接手机,点击test,此时会在手机上下载一个程序,并提示build success,但在进行过程中还是会报错

8.这个报错正常,需要从手机 设置->通用->VPN与设备管理中点击开发者app并信任即可

8.此时再点击test,可以看到控制台有数据了

9.test启动后,在网页端输入http://localhost:8100/status,如果返回信息有jason文件说明启动成功

        1.个别机器在运行是无法获取json文件,可以输入iproxy 8100 8100来设置用于发送(移动端)和接收(mac端)的端口号,此时可以在浏览器中输入网址即可查看成功

10.关闭启动的WebDriverAgent

        1.根据提示(Hold both volume buttoms to stop),同时长摁音量键(经常不太好用)

        2.xcode中还需要点击关闭

三、appium启动及运行抓捕元素

先别着急启动appium inspector,还有其它准备工作要做

1.在inspector中输入以下json格式内容:

{

        "appium:platformName": "ios",                                   # 固定参数

         "appium:deviceName": "自己的设备名称",

         "appium:platformVersion": "系统版本号",  # 例如:16.0.2,填写16.0即可

        "appium:xcodeSigningId": "iPhone Developer",        # 固定参数

         "appium:automationName": "XCUITest",                   # 固定参数

         "appium:udid": "自己的uid号",

        "appium:bundleId":"要启动的应用的ID"                     # 选填

}

        1.其中设备名称可以从连接手机后的访达中看到

        2.udid,可以通过之前下载的ios-deploy查看,在终端输入 ios-deploy -c 即可

        3.bundleId,这个可以在xcode里查到

        4.在新窗口就可以看到程序了

2.在xcode中启动Test

3.启动appium

4.此时在appium-inspector中开启会话,即可连接到手机

5.appium3中python自动化程序的设置参数

from appium.options.ios import XCUITestOptions # 引用这个,注意区分大小写


iOS_capabilities = dict(
    # 这里填之前的json格式件参数
)

driver = webdriver.Remote
        ('http://localhost:4723/wd/hub',  # appium网址
          # 加载的参数函数
          options=XCUITestOptions().load_capabilities(iOS_capabilities)
        )

Logo

更多推荐