移动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 versionjava_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 envjava_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 homebrewcheck_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" fifi#install nodecheck_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" fifi#install appiumcheck_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" fificmd_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++))doecho "start to install ${cmd_list[$i]} \n"install ${cmd_list[$i]}done

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

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

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

  1. 前端实现网站悼念【灰色效果】几行代码轻松解决

    博主介绍

  2. python +appium实现原理_Appium+python自动化(四十)-Appium自动化测试框架综合实践 - 代码实现(超详解)...

    #coding=utf-8#1.先设置编码,utf-8可支持中英文,如上,通常放在第一行 #2.注释:包括记录建立时间,建立人,项目名称. '''Created on 2019-11-18 @auth ...

  3. pythonappium自动化框架_Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)...

    简介 前边一直在分享testng的相关文章,看了点赞量和阅读数不是很高,宏哥猜测估计是大家确实是用不到或者不喜欢吧!不过宏哥经过一段时间的准备,appium的自动化测试框架完善的差不多了,那么接下来宏 ...

  4. oracle行列转换关联union的方式_几行代码轻松玩转 Excel 行列转换

    几行代码轻松玩转 Excel 行列转换 下面这种交叉式的 Excel 表是很常见的格式,用来填写和查看都比较方便: 但是,如果想做进一步的统计分析,这种格式就不方便了,需要行列转换,变成如下格式的明细 ...

  5. adsl拨号无公网地址如何用ddns_【好玩的网络-第5期】分享自编ddns程序,17行代码轻松实现免费ddns,服务器或nas玩家的福音...

    [好玩的网络]系列面向普通人的网络科普视频.我在我的哔哩哔哩账号(up主:旋律果子)更新[好玩的网络]视频版,在我的知乎(用户:曾彦)专栏更新[好玩的网络]文字版.最新消息以及预告在我的个人网站www ...

  6. php本地文件打包代码,PHP实战:几行代码轻松实现PHP文件打包下载zip

    <PHP实战:几行代码轻松实现PHP文件打包下载zip>要点: 本文介绍了PHP实战:几行代码轻松实现PHP文件打包下载zip,希望对您有用.如果有疑问,可以联系我们. PHP应用 //获 ...

  7. python 拆分excel工作表_Python几行代码轻松拆分表格

    Python几行代码轻松拆分表格 作者:梅朵 微信公众号:实用办公编程技能 微信号:Excel-Python 什么?,Python几行代码竟然可以按指定轻松拆分表格? 将test.xls中的数据按地区 ...

  8. html 简繁文件转换器,几行代码轻松搞定网页的简繁转换

    几行代码轻松搞定网页的简繁转换以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对网页进行简繁字体转换的方法一般有两种 ...

  9. 读梁飞-RPC框架几行代码就够了 有感

    梁飞-dubbo框架的设计者,是一位阿里的资深架构师 RPC框架几行代码就够了,这篇文章十分适合不是很了解RPC的人看一遍,最好是自己敲一遍.注释,对入参的处理,对流用后进行关闭,动态代理的使用. 这 ...

最新文章

  1. PerfLab(直接在服务器上完成)
  2. [pytorch、学习] - 5.9 含并行连结的网络(GoogLeNet)
  3. 如何运用领域驱动设计 - 工作单元
  4. Redis源码分析(一)redis.c //redis-server.c
  5. OSM数据的获取及格式转换
  6. 计算机组成说明,计算机组成与系统结构考试说明.ppt
  7. 1-7:学习shell之透过shell看世界
  8. 京东下拉词框天猫下拉词框优化推广方法分享
  9. 【PHP面向对象(OOP)编程入门教程】18.__call()处理调用错误
  10. 重构之以委托取代继承
  11. 《程序化广告实战》一 导读
  12. 用javascript操作xml
  13. spring源码下载以及gradle的详细使用教程
  14. wps怎么将字体变得很大_wps如何将字体无限放大
  15. 文档数据库-MongoDB
  16. C语言输出菱形(C笔记)
  17. 工作-safari时间格式
  18. [转]Discuz 模板原理分析
  19. 笔记本电脑ip服务器未运行怎么办,如何解决控制台打开(Pubwin)提示“服务器未启动或服务器IP地址已更改”的问题...
  20. 【CSS】4步教你绘制爱心图案

热门文章

  1. Endnote X8云同步:家里单位实时同步文献笔记,有网随时读文献
  2. R语言进行dataframe数据内连接(Inner join):使用R原生方法、data.table、dplyr等方案
  3. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、为不同的变量显示不同的统计信息
  4. pandas使用replace函数和正则表达式移除dataframe字符串数据列中头部指定模式字符串(Removing leading substring in dataframe)
  5. Python使用numpy包编写自定义函数计算均方误差(MSE、mean squared error)、评估回归模型和时间序列模型、解读MSE评估指标
  6. R语言ggplot2可视化:ggplot2可视化密度图(显示数据密集区域)、ggplot2可视化密度图(对数坐标):log10比例的收入密度图突出了在常规密度图中很难看到的收入分布细节
  7. R语言case_when函数和cases函数实战
  8. Error in plot.new(): figure margins too large
  9. R可视化绘制卡方分布图(Chi-Square Distribution)
  10. 梯度消失、梯度爆炸、过拟合问题之神经网络应对方案:数据预处理、批量归一化、非饱和激活函数、梯度缩放和梯度裁剪、权重初始化、提前终止、集成学习、l1l2、Dropout