美文网首页软件测试相关自动化测试Appium
appium1-macOS10.12下如何丝滑的使用appium

appium1-macOS10.12下如何丝滑的使用appium

作者: hd_hd | 来源:发表于2017-01-04 19:41 被阅读4670次

    1、下载或者更新Homebrew:homebrew官网 macOS 不可或缺的套件管理器

    $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"  #下载
    $ brew update #更新
    $ brew -v
    Homebrew 1.1.5
    Homebrew/homebrew-core (git revision e151b; last commit 2016-12-26)
    

    2、使用homebrew来安装node.js : Node.js教程 node采用C++编写,是一个JavaScript的运行环境,因为JS是脚本语言需要一个解析器才能运行,对于写在HTML页面的JS,浏览器本身就是解析器,对于需要单独运行的JS,Node.js就是解析器。

    $ brew install node
    $ node -v
    v7.3.0
    

    3、安装npm: NPM 使用介绍 是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。

    $ brew install npm
    

    4、使用npm来安装appium,2017/01/03目前最新的版本是 1.6.3 ,当然也可以在 Macos下bitbucket下载appium客户端,但是坑人的是最新版本是 1.5.3 支持的还只是 iOS10 以下的 UIAutomation 框架基础上测试,而 iOS10 以后苹果使用的却是基于 XCUITest ,所以只能采用npm安装咯。但是因为国内墙太高而使用npm却是从国外服务器下载,有时候使用npm需要非常长的时间,更多时候是失败,推荐使用cnpm来安装:淘宝 NPM 镜像 10分钟同步npmjs.org镜像,使用方式和npm完全一致

    $ npm install cnpm -g --registry=https://registry.npm.taobao.org
    $ npm view appium versions #查看appium所有的版本号
    

    5、使用cnpm安装appium和appium-doctor:

    $ cnpm install -g appium --no-cache
    $ cnpm install -g appium
    $ cnpm install -g appium-doctor
    

    6、检查appium环境检测:

    $ appium-doctor
    info AppiumDoctor Appium Doctor v.1.2.5
    info AppiumDoctor ### Diagnostic starting ###
    info AppiumDoctor  ✔ Xcode is installed at: /Applications/Xcode.app/Contents/Developer
    WARN AppiumDoctor  ✖ Xcode Command Line Tools are NOT installed!
    info AppiumDoctor  ✔ DevToolsSecurity is enabled.
    info AppiumDoctor  ✔ The Authorization DB is set up properly.
    info AppiumDoctor  ✔ The Node.js binary was found at: /usr/local/bin/node
    info AppiumDoctor  ✔ Carthage was found at: /usr/local/bin/carthage
    info AppiumDoctor  ✔ HOME is set to: /Users/denglibing
    WARN AppiumDoctor  ✖ ANDROID_HOME is NOT set!
    info AppiumDoctor  ✔ JAVA_HOME is set to: /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
    WARN AppiumDoctor  ✖ adb could not be found because ANDROID_HOME is NOT set!
    WARN AppiumDoctor  ✖ android could not be found because ANDROID_HOME is NOT set!
    WARN AppiumDoctor  ✖ emulator could not be found because ANDROID_HOME is NOT set!
    WARN AppiumDoctor  ✖ Bin directory for $JAVA_HOME is not set
    info AppiumDoctor ### Diagnostic completed, 6 fixes needed. ###
    info AppiumDoctor 
    info AppiumDoctor ### Manual Fixes Needed ###
    info AppiumDoctor The configuration cannot be automatically fixed, please do the following first:
    WARN AppiumDoctor - Manually configure ANDROID_HOME.
    WARN AppiumDoctor - Manually configure ANDROID_HOME and run appium-doctor again.
    WARN AppiumDoctor - Add '$JAVA_HOME/bin' to your PATH environment
    info AppiumDoctor ###
    info AppiumDoctor 
    info AppiumDoctor Bye, run appium-doctor again when all manual fixes have been applied!
    info AppiumDoctor 
    

    常见问题解决:

    ✖ Xcode Command Line Tools are NOT installed!
    $ xcode-select --install   #按照提示安装即可
    
    ✖ Carthage was NOT found!
    $ brew install carthage    #carthage:类似cocoapods管理第三方代码,自动将工程编译为动态库,所以仅支持iOS8以上
    
    WARN AppiumDoctor  ✖ ANDROID_HOME is NOT set!
    但是建议安装安装编译器,可以解决其他Android环境的其他问题 AndroidStudio(https://developer.android.com/studio/index.html?hl=zh-cn)
    设置 ANDROID_HOME 路径:
    http://stackoverflow.com/questions/19986214/setting-android-home-enviromental-variable-on-mac-os-x
    设置 JAVA_HOME 路径:
    http://stackoverflow.com/questions/6588390/where-is-java-home-on-osx-sierra-10-12-el-captain-10-11-yosemite-10-10
    
    
    JAVA_HOME问题:
    当前最新JDK版本下载地址 Java SE Development Kit 8u111 (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
    
    .bash_profile文件:
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
    export ANDROID_HOME=/Users/denglibing/Library/Android/sdk
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:${JAVA_HOME}/bin
    

    7、安装appium客户端,上面的操作只是安装了server端,接下来需要安装测试代码运行所依赖的客户端,我们以python为例:

    git clone https://github.com/appium/python-client
    cd python-client
    #谢谢 @GentHuang 提醒
    sudo python setup.py install
    

    8、对于 iOS10 以上的测试,需要下载安装 appium-xcuitest-driver 驱动:Appium iOS driver, backed by Apple XCUITest , 当然也可以在 /usr/local/lib/node_modules/appium/node_modules/.2.5.1@appium-xcuitest-driver/WebDriverAgent/ 找到该项目,执行 carthage update , 选择 WebDriverAgentRunner 这个target编译即可。

    其他相关的安装:

    $ ./Scripts/bootstrap.sh  #感谢网友 @托托李_742f 的提醒,添加该命令解决很多人编译WebDriverAgent不通过的问题。
    $ brew install libimobiledevice --HEAD  # install from HEAD to get important updates
    $ brew install ideviceinstaller         # 只是对iOS9有用
    
    $ npm install -g ios-deploy             # iOS10 以后的版本安装ios-deploy
    $ sudo gem install xcpretty             # 真机需要安装 xcpretty
    

    不太熟悉WebDriverAgent的可以看看这个博客:
    https://testerhome.com/topics/7220

    9、下载测试代码并且测试,官网上的测试代码坑很多,这个问题我困扰我好久。一开始还以为是自己那个环境出问题还是流程不对,结果真的只是官网测试代码本身问题,当然可以自己编写代码测试咯,也可以下载我的一个简单的 erduoniba/appium_ios_sample_code

    先启动 appium 服务器:

    $ appium &
    

    再执行模拟器的python客户端的代码测试

    $ cd sample-code/apps/HHH
    
    #在sample-code/apps/HHH/build/Release-iphonesimulator/得到HHH.app包
    $ xcodebuild -sdk iphonesimulator
    Build settings from command line:
        SDKROOT = iphonesimulator10.2
    
    === BUILD TARGET HHH OF PROJECT HHH WITH THE DEFAULT CONFIGURATION (Release) ===
    ...
    ...
    ...
    Signing Identity:     "-"
    
        /usr/bin/codesign --force --sign - --timestamp=none /Users/denglibing/Desktop/sample-code/apps/HHH/build/Release-iphonesimulator/HHH.app
    
    ** BUILD SUCCEEDED **
    
    
    $ cd sample-code/examples/python
    $ python ios_simple_simulator.py       # 执行测试脚本时,会遇到 HTMLTestRunner 错误的问题,这个是因为第二篇也对这个脚本进行了测试,请移步到 这里http://www.jianshu.com/p/a673b93d1f98 可以快速解决并输出测试结果
    test_scroll (__main__.SimpleIOSTests) ... ok
    
    ----------------------------------------------------------------------
    Ran 1 test in 30.421s
    
    OK
    

    对于真机,可能要麻烦些,安装 appium-xcuitest-driver 驱动后,生成在真机上运行的包:

    参考资料可以看官网的说明 部署ios-app-到手机上

    # 在 apps/HHH/build/Release-iphoneos/HHH.app 得到 release 包
    $ xcodebuild -sdk iphoneos -target HHH -configuration Release CODE_SIGN_IDENTITY="iPhone Distribution: Shenzhen XXXX Technology Co., Ltd. (B9FH944VTE)" 
    PROVISIONING_PROFILE="08f04032-ca2e-4bb5-b1ba-c32778115f2e"
    

    关于怎么设置 CODE_SIGN_IDENTITYPROVISIONING_PROFILE 如何查看 ,可以选择下图所示的 Development Team 一行, control+c 然后 复制出去即可

    接下来连上真机 执行测试用例代码:

    $ cd sample-code/examples/python
    $ python ios_simple_device.py
    test_scroll (__main__.SimpleIOSTests) ... ok
    
    ----------------------------------------------------------------------
    Ran 1 test in 30.421s
    
    OK
    

    10:一些很有帮助的资料

    很好的论坛 https://testerhome.com
    appium源码地址: https://github.com/appium/appium
    appium官网地址:http://appium.io/
    appium中文说明文档:http://appium.io/slate/cn/master/?ruby#about-appium

    11、心得:

    整体的流程其实不多,但是在macOS10.12搭建appium的环境及测试整个过程着实烦躁,有时候一个小问题就卡1-2天也不好说,而且官网上的文档和测试代码已经部分误导我走了非常多的歪路。

    比如

    11.1、开始使用 appium1.5.3的mac客户端,虽然在macOS10.12上也有些问题,确实毕竟GUI用起来非常方便,可惜是基于 UIAutomation 框架来的,然后在iOS10中已经使用了新的框架 XCUITest ,只能废弃;

    11.2、关于appium如果搭建啊,进行测试啊相关的文章其实不少,有中文的也有英文的,可能是作者在那个时候测试兼容过,但是iOS10上真的很多是误导了,而且搭建的流程我不建议阅读 appium中文说明文档 ,毕竟年代太久远了。倒是可以在 appium源码地址 上多多发现类似的问题或者多多提问,作者及团队人员很热血 😊

    11.3、还是环境问题,动不动就会失败,这个时候只能有耐心的多多看看log日志了,log少什么就满足他们,边边角角的一些依赖资源也可以了解了解😄,毕竟程序员需要耐得住寂寞😁,上面的流程基于当前最新的开发环境 Xcode8.2iOS10.2

    相关文章

      网友评论

      • Kx_:学习了,想问个问题,怎么实现iOS覆盖安装app即测试app版本升级,我先安装一个旧版本的,想再安装一个新版本的,但是安装完旧版本app之后再安装新版本app会直接跳过安装然后启动旧版本的,有遇到过这样的问题吗,想了解一下思路
      • 古古阁:安装appium-xcuitest-driver驱动时/usr/local/lib/node_modules/appium/node_modules下面没有.2.3.1@appium-xcuitest-driver这个目录怎么办
        hd_hd: 没有找到可能是你没有找到最新的版本,也可能最新的已经没有在这个路径下面了,你可以在 https://github.com/facebook/WebDriverAgent 这里下载最新的试试。
      • 8178caff89fc:运行你的测试代码报错:bogon:python cuiping1$ python ios_simple_simulator.py
        Traceback (most recent call last):
        File "ios_simple_simulator.py", line 12, in <module>
        import HTMLTestRunner
        ImportError: No module named HTMLTestRunner


        这是啥原因?
        hd_hd:把这行代码注释掉,或者你先不测试,看第二部分就明白了
      • 8178caff89fc:我下载了xcuitest,要放在哪里,怎么操作呢?选择 WebDriverAgentRunner 这个target编译就行吗?
        hd_hd:@托托李_742f 328418417
        8178caff89fc:@hd_hd 方便加qq或微信不
        hd_hd:是这样的
      • df8ddc680aa5:你好,请问下现在iOS10还可以用UIAutomation么,不用Xcode8,用的是7,在macos 10.12上,我现在每次运行都提示instruments exited with code 253。因为之前已经积累了很多用例,不想轻易更改。
        hd_hd:@写耶
        HTMLTestRunner 这个是输出测试结果用的,它会把你的测试结果生成Html更好的展示结果。
        你可以看一下这个:
        http://www.jianshu.com/p/a673b93d1f98
        写耶:您好,我想问一下这个HTMLTestRunner是啥~
        hd_hd:iOS10 以后苹果使用的却是基于 XCUITest 来自动化测试的,个人感觉和Xcode7还是Xcode8没有关系,所以只能大改了,个人感觉哦。
      • 810a3a820bb4:楼主你好,我用xcode编译WebDriverAgent.xcodeproj时提示'openURL:' is deprecated: first deprecated in iOS 10.0 - Please use openURL:options:completionHandler: instead是什么原因呢,手机现在是10.3.1系统,xcode8 Mac 10.12.3
        810a3a820bb4:不好意思,我看了你回楼上的,我再试试
        810a3a820bb4:@hd_hd 你好,我更新了下代码,路径是在下载录下,但是原来的/usr/local/lib/node_modules/appium/node_modules/._appium-xcuitest-driver@2.23.1@appium-xcuitest-driver/下,是否要删除原来的代码?要怎么删除?
        hd_hd:https://github.com/facebook/WebDriverAgent 更新一下最新代码试试看,我这边下载最新的项目运行没有问题。
      • 卉姐思谈:第8条真心看不懂
        hd_hd:最近公司项目比较忙,所以才回你,不好意思,我详细的说明一下吧:
        1、先在这里下载代码 https://github.com/facebook/WebDriverAgent
        2、下载之后进入 WebDriverAgent 文件夹下,
        3、终端 cd WebDriverAgent所在的文件夹,在执行 carthage update (如果没有安装cartage先安装,或者更新最新的cartage版本)
        4、好了之后,使用Xcode打开项目,选择 WebDriverAgentRunner 这个target编译即可
        看个: http://7xqhx8.com1.z0.glb.clouddn.com/appium8.png
      • 卉姐思谈:" 选择 WebDriverAgentRunner 这个target编译即可。"这个怎么操作?
        hd_hd:你看看这张图片
        http://7xqhx8.com1.z0.glb.clouddn.com/appium8.png
      • nonatomic:楼主,我现在环境还没有搭建完成,问下一,iOS这边能否通过WiFi链接,而不需要用数据线连接来完成自动化测试
        hd_hd:@haoyangde
        :+1::+1::+1::+1::+1:
        nonatomic:@hd_hd 我在官网找到了,是不支持的
        IOS

        Unfortunately, at the moment Appium does not support the Selenium network connection API for iOS.

        ANDROID

        Choose the setting you would like to use, and then send the correct bitmask from the table above.

        WINDOWS

        Unfortunately, at the moment Appium does not support the Selenium network connection API for Windows.
        hd_hd:不支持WiFi链接,如果能实现,请告知我哦
      • e5b67824629b:感谢楼主分享,我目前正在给团队引入appium,但是目前在构件上遇到一些问题,比如
        1:初步我仅需要研究ios真机上的自动化测试。运行appium-doctor时ANDROID_HOME、JAVA_HOME及adb项均不配置的情况下是否可行。
        2:第八步关于appium-xcuitest-driver的安装没有搞明白。。。
        3:虚拟机调试的时候,启动appium 后显示[Appium] Appium REST http interface listener started on 0.0.0.0:4723就没有后续了。。。
        8178caff89fc:xcuitest的安装我也没明白
        选择 WebDriverAgentRunner 这个target编译即可---这句话没明白怎么编译:disappointed_relieved:
        hd_hd:1:初步我仅需要研究ios真机上的自动化测试。运行appium-doctor时ANDROID_HOME、JAVA_HOME及adb项均不配置的情况下是否可行。
        可行
        2: 第八步关于appium-xcuitest-driver的安装没有搞明白。。。
        需要下载 WebDriverAgent 这个项目,执行 carthage update , 选择 WebDriverAgentRunner 这个target编译即可。之后需要安装一些工具:
        $ brew install libimobiledevice --HEAD # install from HEAD to get important updates
        $ brew install ideviceinstaller # 只是对iOS9有用

        $ npm install -g ios-deploy # iOS10 以后的版本安装ios-deploy
        $ sudo gem install xcpretty # 真机需要安装 xcpretty

        3: 虚拟机调试的时候,启动appium 后显示[Appium] Appium REST http interface listener started on 0.0.0.0:4723就没有后续了。。。
        说明你的appium服务端已经搭建好了,接下来你需要安装一个appium的客服端,可以看第九步说明。
      • 西门吹雪123:楼主,你好。我按照你的步骤到了第6步就不是很明白了,无法往下执行。特别是这里 ==》“但是建议安装安装编译器,可以解决其他Android环境的其他问题 AndroidStudio(https://developer.android.com/studio/index.html?hl=zh-cn
        设置 ANDROID_HOME 路径:
        http://stackoverflow.com/questions/19986214/setting-android-home-enviromental-variable-on-mac-os-x
        设置 JAVA_HOME 路径:
        http://stackoverflow.com/questions/6588390/where-is-java-home-on-osx-sierra-10-12-el-captain-10-11-yosemite-10-10


        JAVA_HOME问题:
        当前最新JDK版本下载地址 Java SE Development Kit 8u111 (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)

        .bash_profile文件:”
        我也安装了 eclipse 和 Android studio这两个工具,终端执行:appium-doctor 还是提示有哪些警告,设置bash_profile后 ,终端命令却出现“commnd not found” 。就算忽略这些警告,启动appium客户端,还是无法启动模拟器和真机。求楼主指导,有没有QQ号, 想跟你深入探讨一下。以上,感谢感谢~~
        b11b4e15c7fe:提示没找到要仔细检查自己的命令是否正确,百度下Mac终端的环境配置方法及命令,这个不是难点
        hd_hd:328418417
        我们可以讨论一下 😊
      • d9b619ad25e2:请问下楼主,XCUITest在哪里打开呢,没找到入口呢
      • d9b619ad25e2:楼主请问,搭建最新的1.6.3要吧以前的1.5.3的环境卸载了吗
        d9b619ad25e2:@hd_hd xcrun: error: active developer path ("/Applications/Xcode-7-beta.app/Contents/Developer") does not exist
        Use `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools, or use `xcode-select --install` to install the standalone command line developer tools.
        See `man xcode-select` for more details.
        Error: Failure while executing: git config --local --replace-all homebrew.analyticsmessage true

        我以前下载的xcode7的版本,现在安装的事xcode8,安装brew update更新的时候报的错误
        d9b619ad25e2:@hd_hd 是下载的客户端,我1.5.3的环境都没搭建成功,我的mac系统是10.12.2的
        hd_hd:1.5.3是下载客户端安装的吗?我的建议是先卸载了appium
      • d9b619ad25e2:学习了,谢谢楼主分享,正在搭建环境中。希望能像楼主多多学习
        d9b619ad25e2:@hd_hd 谢谢楼主
        hd_hd:我搜索了很多教程,很多其实已经过时了,希望我这个能对你有帮助

      本文标题:appium1-macOS10.12下如何丝滑的使用appium

      本文链接:https://www.haomeiwen.com/subject/vghavttx.html