Mac自动化环境搭建

  • 工具原料
    • Homebrew
    • Java(1.8.0 及以上)
    • Xcode(8.0 及以上版本)
    • IDE(Eclipse, Intellij 或其他 Java IDE)
    • Appium - Desktop(1.1.0 及以上版本, 可选)
    • iPhone(iPhone 6 及以上机型, 10.0 及以上系统 )
  • 基础工作
    • 运行java -version查看 java 版本是否满足最低要求, 自行升级
    • 运行xcode-select --install安装 Xcode Command Line Tool(已安装则跳过)
    • 下载脚本 bootstrap.sh(运行脚本需要升级 brew, 可根据脚本提示选择是否手动升级; bash bootstrap.sh -h可获取脚本详细信息, 包括参数说明、所需安装依赖工具等其他注意事项)
  • 注意事项
    • 自动化环境分为两种版本(针对日常的的自动化需求只需构建 GUI 版本即可)
      1. GUI(图形界面)版本, 集成了图形化的工具, 便于编写用例及调试(推荐版本)
      2. CLI(命令行界面)版本, 使用命令行启动服务, 便于集成自定义脚本
    • 运行脚本安装依赖环境和配置 WebDriverAgent 均须联接网络
    • Inspect 是查看App界面的辅助工具, 用于日常调试时的元素捕获定位, 文档中关于调试 Inspector 的步骤除帮助熟悉配置并使用这个工具外, 对于自动化环境的构建, 能成功运行 Inspector 查看界面元素也是环境构建完成的最终标志
    • Java IDE 需集成单元测试工具 JUnit(Eclipse默认集成, Intellij一般也默认集成,在编写用例过程中如无单元测试按钮自行安装插件)
  • 配置依赖环境
  • 编写测试用例
  • FAQ

GUI

  • 运行脚本 bash bootstrap.sh -d安装 GUI 依赖环境
  • 运行appium-doctor --ios检查环境是否安装正确
  • 安装 Appium
  • 配置 WebDriverAgent
    1. 进入 WebDriverAgent 根目录 (cd /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent, 根据 Appium.app 安装路径调整命令)
    2. 配置 WebDriverAgent
  • 调试 Appium Inspector

WebDriverAgent

  1. 使用 Xcode 打开WebDriverAgent.xcodeproj, 选择编译目标机器, 修改 WebDriverAgentLib -> Bundle Identifier : com.facebook.WebDriverAgentLibcom.xxx.WebDriverAgentLib 其他ID, 勾选 Automatically manage singing 使用个人账号 team, 保证此处不产生编译错误
    ![图1]
    autotest_process5.png
  2. 先修改 WebDriverAgentRunner -> Build Setting -> Product Bundle Identifier : com.facebook.WebDriverAgentLib 与上步相同, 之后勾选 Automatically manage signing 使用个人账号 team, 保证此处不产生编译错误
    图2

    图3

Appium Inspector

  1. 启动 Appium 服务端


    图4
  2. 建立 Session


    图5
  3. 选中Automatic Sercer配置并开启 Session(左侧为真机配置, 右侧为模拟器配置。需要注意的是模拟器配置需要给定具体的机型和对应的版本号, 可运行instruments -s查看
    图6

    图7

CLI

  • 运行脚本 bash bootstrap.sh -d安装 CLI 依赖环境
  • 运行appium-doctor --ios检查环境是否安装正确
  • 配置 WebDriverAgent
    • 进入 WebDriverAgent 根目录 (cd /usr/local/lib/node_modules/appium/node_modules/_appium-xcuitest-driver@2.41.0@appium-xcuitest-driver/WebDriverAgent, 根据安装路径调整命令)
    • 配置 WebDriverAgent
  • 配置 app-inspector
    • 进入 app_inspector 根目录(cd /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD, 根据安装路径调整命令)
    • 配置 app-inspector
  • 启动服务
    • 运行appium -p 4723

app-inspector

  1. 使用 Xcode 打开XCTestWD.xcodeproj, 选择编译目标机器, 修改 XCTestWD -> Bundle Identifier : XCTestWD.XCTestWDxxx.XCTestWD 其他ID, 勾选 Automatically manage singing 使用个人账号 team, 保证此处不产生编译错误
    图8
  2. 修改 XCTestWDUITests -> Build Setting -> Product Bundle Identifier : XCTestWD.XCTestWD 与上步相同, 勾选 Automatically manage signing 使用个人账号 team, 保证此处不产生编译错误
    图9
  3. 运行app-inspector -u 真机UDID(CLI环境构建完成)
    图10

编写测试用例

  • 用 IDE 打开工程


    图11
  • 修改Auto_iOS/config/config.properties文件配置, 一般只需修改 deviceCode, 即真机 UDID

    图12

  • 如需模拟器运行,则注释 deviceCode, 填写相应 .app 文件路径


    图13
  • 编写测试用例进行调试


    图14

FAQ

  • Q : 启动 Appium Server 后进行 Inspectior 调试的候日志显示xcodebuild exited with code '65' and signal 'null'
    • A : 此类问题原因很多, 但是度可以归结为 WebDriverAgent 的编译问题。例如工程证书签名报错或者没有在真机上信任证书。解决方法:
      • 保证网络联接正常
      • 进入 WebDriverAgent 根目录, 并在当前目录下执行xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真机UDID' clean test(替换 id 为相应参数)(或者用 Xcode 打开WebDriverAgent.xcodeproj选择真机执行command + U操作)在真机上 Test。根据日志信息进行修复直到成功为止,关闭进程。
      • 如果日志提示证书验证失败, 在手机上进入设置 -> 通用 -> 描述设备与设备管理选择相应的证书进行认证(手机保持联网状态)并再次进行同样的 Test 操作
        图15
  • Q : 运行 app-inspectort 报错,浏览器显示 Internal Server Error
    • A : 此类问题一般为 app-inspectort 编译问题, 解决方法:
      • 进入 app-inspector 根目录, 并在当前目录下执行xcodebuild -project XCTestWD.xcodeproj -scheme XCTestWDUITests -destination 'id=真机UDID' XCTESTWD_PORT=8001 clean test(替换 id 为相应参数)(或者用 Xcode 打开XCTestWD.xcodeproj选择真机执行command + U操作)在真机上 Test。根据日志信息进行修复直到成功为止,关闭进程。
        图16
  • Q : 打开自动化代码工程后代码大面积报错, 编译器提示 Project SDK is not defined, 进行单元测试出现下图警告
    图17
    • A : 此类问题一般为工程的 Java SDK 路径错误, 解决方法:
      1. 选择 File -> Project Structure
        图18
      2. 选择 Java SDK, 如果选项中没有 SDK, 则原因是没有设置 Java Home 路径, 选择 New, 添加 Java SDK, 路径为/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home, 路径会因为版本而稍有不同
        图19
      3. 保存设置再次运行
  • Q : 已经安装了最新的 Java 版本, 运行java -version却依然显示旧版本号
    • A : 假设 Java 版本为 1.6, 操作如下:

      sudo mv /usr/bin/java /usr/bin/java-1.6
      
      sudo ln -s '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java' /usr/bin/java    
      

      如上步遭遇 Operation not permitted 错误, 重启电脑, 开机时按command + R组合快捷键, 进入恢复模式, 打开Terminal输入命令后重启, 重复上步

      csrutil disable
      
      

      可用同样的方式 enable csrutil

    ```
    csrutil disable

    ```
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容