51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2018|回复: 0
打印 上一主题 下一主题

[转贴] 自动化测试框架:几行代码搞定Appium环境

[复制链接]
  • TA的每日心情
    擦汗
    11 小时前
  • 签到天数: 1048 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-11-1 14:23:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    移动UI自动化测试中,很多人用appium这个开源框架。
      发现很多人在安装时,安装过程中出现各种问题,花费很多时间。特别是团队开始用时。每个人都在这上面踩坑,得不偿失。
      我写了一个脚本来自动实现这个安装环境。当时我的shell能力也很一般,如果有改进的地方,可以指出来。
      Appium是一款开源的跨平台测试自动化工具,适用于本地,混合和移动网络和桌面应用程序。支持模拟器(iOS、Android)和真实设备(iOS,Android,Windows,Mac)。
      准备工具
      · Xcode
      · PyCharm
      · Command Line Tool
      · HomeBrew 、Node 、npm ...
      这里以mac环境为例,讲讲如何准备appium环境。
      首先你得检测你的java环境是否装好。
      1.安装Homebrew
      Homebrew是MACOSX的软件管理工具,粗俗点说就是ma界的qq软件助手之类的东西。所以通过brew,安装什么chrome浏览器啊、atom编辑器之类的可视化工具也是可以的。
    1.  /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    复制代码
    2.安装Node
    1. brew install node
    复制代码
    3.安装npm
    1. npm 是node.js界的程序/模块管理工具,也就是说npm只管理那些服务于JavaScript社区的程序。而且跨平台,只要有node环境,windows和osx,以及其他unix like操作系统都可以使用
    复制代码
     切换淘宝镜像安装npm
    1.   npm install -g cnpm --registry=https://registry.npm.taobao.org
    复制代码
     4.安装carthage

      类似cocoapods管理第三方代码,自动将工程编译为动态库,仅支持iOS8以上。
    1. brew install carthage
    复制代码
    5.安装其他工具
      libimobiledevice 使用指南:
    1. brew install libimobiledevice --HEAD
    复制代码
     ideviceinstaller 负责给iOS设备安装卸载应用或者备份应用。该工具是基于libmobiledevice的,因此首先要完成libmobiledevice的编译安装。

    1.  brew install ideviceinstaller
    2.   ### 6.安装Appium-Python-Client
    复制代码
     如果我们用python语言来写appim,还需要安装Appium-Python-Client
    1.   pip install Appium-Python-Client
    复制代码
     6.安装appium
    npm install -g appium

     当然,你可以切换淘宝镜像
      7.安装appiumappium-doctor
    npm install -g appium-doctor

    运行appium-doctor来检测你的环境
      God! 太多了,能不能有简便的方法。
      我写了一个脚本,执行一下,能干上面所有事情。
    1. #!/bin/bash
    2.   # get the java version
    3.   java_version=`java -version`
    4.   if [[ $check_results =~ "1.8." ]]
    5.   then
    6.       echo "java version is 1.8, it seems not need to install java again."
    7.   else     
    8.       echo "It is going to install jdk 1.8 version"
    9.   fi
    10.   # add JAVA_HOME in env
    11.   java_location=`ls -lrt /usr/bin/java |  awk '{print $NF}'`
    12.   profile_location="/Users/anderson/.bash_profile"`sed -i '$a export JAVA_HOME=${java_location} export PATH=$PATH:$JAVA_HOME/bin' ${profile_location}`
    13.   if [ $? -eq 0 ]; then
    14.       echo "add java env success"
    15.   else  
    16.       echo "add java env fail"
    17.   fi
    18.   # check homebrew
    19.   check_results=`brew -v | grep "Homebrew"`echo "brew version is: ${check_results}"
    20.   if [[ $check_results =~ "Homebrew" ]]
    21.   then
    22.       echo "package Homebrew has already installed. "
    23.   else
    24.       echo "This is going to install package Homebrew"
    25.       `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`
    26.       if [ $? -eq 0 ]; then
    27.           echo "Install brew success"
    28.       else  
    29.           echo "Install brew fail"
    30.       fi
    31.   fi
    32.   #install node
    33.   check_results=`node -v`echo "node version is: ${check_results}"
    34.   if [[ $check_results =~ "\d+" ]]
    35.   then
    36.       echo "node has already installed. "
    37.       echo "will upgrade node"
    38.       `brew upgrade node`
    39.   else
    40.       echo "This is going to install package node"
    41.       `brew install node`
    42.   if [ $? -eq 0 ]; then
    43.           echo "Install node success" else  
    44.           echo "Install node fail"
    45.       fi
    46.   fi
    47.   #install appium
    48.   check_results=`appium -v`echo "appium version is: ${check_results}"
    49.   if [[ $check_results =~ "\d+" ]]
    50.   then
    51.       echo "appium has already installed. "
    52.   else
    53.       echo "This is going to install package appium"
    54.       `npm install -g appium --registry http://registry.npm.taobao.org`   
    55.   if [ $? -eq 0 ]; then
    56.           echo "Install appium success"
    57.       else  
    58.           echo "Install appium fail"
    59.       fi
    60.   fi
    61.   cmd_list=(    "npm install wd"
    62.       "pip install Appium-Python-Client"
    63.       "npm install -g appium-doctor --registry http://registry.npm.taobao.org"
    64.       "brew install carthage"
    65.       "brew install libimobiledevice --HEAD"
    66.       "brew install ideviceinstaller"
    67.       "brew install upgrade ideviceinstaller"
    68.       "gem install xcpretty"
    69.       "npm install app-inspector -g"
    70.       "appium-doctor"
    71.       )
    72.   function install(){
    73.       echo "will install $@"
    74.       result = $($@)   
    75.       if [ $? -eq 0 ]; then
    76.           echo "Install $1 success"
    77.       else  
    78.           echo "Install $1 fail"
    79.       fi
    80.   }
    81.      
    82.      
    83.   for ((i=0; i< ${#cmd_list[*]}; i++))
    84.       do
    85.           echo "start to install ${cmd_list[$i]} \n"
    86.           install ${cmd_list[$i]}
    87.       done
    复制代码
    用shell来处理环境,效率会高很多,还不会出错。
      还可以练练shell, 一举多得。





    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 20:23 , Processed in 0.060677 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表