自动化测试框架:几行代码轻松解决Appium环境问题

移动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编辑器之类的可视化工具也是可以的。

  /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  2.安装Node

  brew install node

  3.安装npm

  npm 是node.js界的程序/模块管理工具,也就是说npm只管理那些服务于JavaScript社区的程序。而且跨平台,只要有node环境,windows和osx,以及其他unix like操作系统都可以使用

  切换淘宝镜像安装npm

  npm install -g cnpm --registry=https://registry.npm.taobao.org

  4.安装carthage

  类似cocoapods管理第三方代码,自动将工程编译为动态库,仅支持iOS8以上。

  brew install carthage

  5.安装其他工具

  libimobiledevice 使用指南:

  brew install libimobiledevice --HEAD

  ideviceinstaller 负责给iOS设备安装卸载应用或者备份应用。该工具是基于libmobiledevice的,因此首先要完成libmobiledevice的编译安装。

  brew install ideviceinstaller

  ### 6.安装Appium-Python-Client

  如果我们用python语言来写appim,还需要安装Appium-Python-Client

  pip install Appium-Python-Client

  6.安装appium

  npm install -g appium

  当然,你可以切换淘宝镜像

  7.安装appiumappium-doctor

  npm install -g appium-doctor

  运行appium-doctor来检测你的环境

  God! 太多了,能不能有简便的方法。

  我写了一个脚本,执行一下,能干上面所有事情。  

#!/bin/bash

  # get the java version

  java_version=`java -version`

  if [[ $check_results =~ "1.8." ]] 

  then 

      echo "java version is 1.8, it seems not need to install java again."

  else     

      echo "It is going to install jdk 1.8 version"

  fi

  # add JAVA_HOME in env

  java_location=`ls -lrt /usr/bin/java |  awk '{print $NF}'`

  profile_location="/Users/anderson/.bash_profile"`sed -i '$a export JAVA_HOME=${java_location} export PATH=$PATH:$JAVA_HOME/bin' ${profile_location}`

  if [ $? -eq 0 ]; then 

      echo "add java env success" 

  else  

      echo "add java env fail" 

  fi

  # check homebrew

  check_results=`brew -v | grep "Homebrew"`echo "brew version is: ${check_results}"

  if [[ $check_results =~ "Homebrew" ]] 

  then 

      echo "package Homebrew has already installed. "

  else 

      echo "This is going to install package Homebrew"

      `/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`

      if [ $? -eq 0 ]; then 

          echo "Install brew success" 

      else  

          echo "Install brew fail" 

      fi

  fi

  #install node

  check_results=`node -v`echo "node version is: ${check_results}"

  if [[ $check_results =~ "\d+" ]] 

  then 

      echo "node has already installed. "

      echo "will upgrade node"

      `brew upgrade node`

  else 

      echo "This is going to install package node"

      `brew install node`

  if [ $? -eq 0 ]; then 

          echo "Install node success" else  

          echo "Install node fail" 

      fi

  fi

  #install appium

  check_results=`appium -v`echo "appium version is: ${check_results}"

  if [[ $check_results =~ "\d+" ]] 

  then 

      echo "appium has already installed. "

  else 

      echo "This is going to install package appium"

      `npm install -g appium --registry http://registry.npm.taobao.org`    

  if [ $? -eq 0 ]; then 

          echo "Install appium success" 

      else  

          echo "Install appium fail" 

      fi

  fi

  cmd_list=(    "npm install wd"

      "pip install Appium-Python-Client"

      "npm install -g appium-doctor --registry http://registry.npm.taobao.org"

      "brew install carthage"

      "brew install libimobiledevice --HEAD"

      "brew install ideviceinstaller"

      "brew install upgrade ideviceinstaller"

      "gem install xcpretty"

      "npm install app-inspector -g"

      "appium-doctor"

      )

  function install(){

      echo "will install $@"

      result = $($@)    

      if [ $? -eq 0 ]; then 

          echo "Install $1 success" 

      else  

          echo "Install $1 fail" 

      fi

  }

      

      

  for ((i=0; i< ${#cmd_list[*]}; i++))

      do

          echo "start to install ${cmd_list[$i]} \n"

          install ${cmd_list[$i]}

      done

  用shell来处理环境,效率会高很多,还不会出错。

  还可以练练shell, 一举多得。

 

原文地址:https://blog.csdn.net/weixin_54556126/article/details/123095605

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于nodejs...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么实现目录不存在自动创建”文章能帮助大...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs如何实现定时删除文件”文章能帮助大家解决疑惑...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
本篇内容主要讲解“怎么安装Node.js的旧版本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎...
这篇“node中的Express框架怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要介绍“nodejs如何实现搜索引擎”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs如何实现搜索引擎...
这篇文章主要介绍“nodejs中间层如何设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs中间层如何设置”文...
这篇文章主要介绍“nodejs多线程怎么实现”,在日常操作中,相信很多人在nodejs多线程怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
这篇文章主要讲解了“nodejs怎么分布式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs怎么分布式”...
本篇内容介绍了“nodejs字符串怎么转换为数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
这篇文章主要介绍了nodejs如何运行在php服务器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nodejs如何运行在php服务器文章都...
本篇内容主要讲解“nodejs单线程如何处理事件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs单线程如何...
这篇文章主要介绍“nodejs怎么安装ws模块”,在日常操作中,相信很多人在nodejs怎么安装ws模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
本篇内容介绍了“怎么打包nodejs代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!
本文小编为大家详细介绍“nodejs接收到的汉字乱码怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs接收到的汉字乱码怎么解决”文章能帮助大家解...
这篇“nodejs怎么同步删除文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇...
今天小编给大家分享一下nodejs怎么设置淘宝镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希