第一次使用博客,小白级,互相交流,有说的不对的地方欢迎来喷!!!

自动化的目的就是减少人工成本,如果每次跑自动化用例时都要手动起appium客户端,太费事了~~故,将appium server的调起和关闭写在代码中是必要的一步。

在步骤中说坑。。。(ps:小白的坑,大神可能会嘲笑~~呼呼~~)

1.将appium客户端打开,能够看到启动server其实是这句话> Launching Appium server with command: D:\Program Files (x86)\Appium\node.exe lib\server\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 23 --automation-name Appium --device-name "MI 3W" --language en --log-no-color,如下图:

需要将node.exe替换成路径node_modules\appium\。cmd命令其实就是node一下上述的command

2.拿到了命令只要写入进代码就行了。这里用到了os模块,最简单的os.system就可以满足。

关于路径的空格、()、\、"的转义最是坑爹

先将D:\Program Files (x86)\镜像成一个w:,然后转义\\和\",

测试机的Android版本对应的appium version和手机device name是测试机独有属性,所以定义函数时加了这两个参数

具体代码如下:

# coding=utf-8
import os
import time # os.system("subst w: \"D:\Program Files (x86)\"") #镜像用一次就行,所以我注释掉了
def start_AppiumS(devicename,level):
t = "start node w:\\Appium\\node_modules\\appium\\lib\\server\\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version "+level+" --automation-name Appium --device-name \"" + devicename + "\" --language zh_CN --log-no-color"
os.system(t)
time.sleep(2)
return

这里要刻意强调一下,os.system会阻塞进程,为避免不影响执行下一步,在命令前面一定要加start


到这里为止,启动appium server已经搞定,下面开始写杀appium server


1.杀appium server主要是在于取得node的进程端口号

可用命令查询端口号 netstat -aon |findstr 4723

用os.popen获取执行命令后的返回值,从中提取出需要的pid端口号

说一下此处我遇到的坑吧,先上图

按4723查到的进程有很多,os.popen获取后是以字符型存储的,且有许多空格。此处用了最笨的小白方法,去空格分割字符串~~~~~汗汗汗-_-||

代码如下:

def kill_AppiumS():
process = os.popen("netstat -aon |findstr 4723").read()
pid = process.replace(' ','').split(" ")[2]
print(pid)
m = os.popen("taskkill -f -pid %s" % pid)
print(m.read())

有不对或者需要改进的地方,欢迎大神吐槽~~

最新文章

  1. MariaDB 在 Windows 下 noinstall 版本的安装和配置
  2. web桌面程序之图标拖动排序的分析
  3. 【BZOJ-3573】米特运输 树形DP
  4. GMU 简单使用一
  5. Sql如何自动定时备份数据库
  6. hive0.12 rcfile gzip 测试
  7. 如何将PHP对象数组转换成普通数组
  8. 安全协议:SSL、TSL、SSH概述
  9. Linux之查看CPU信息
  10. 移动端轮播图插件(支持Zepto和jQuery)
  11. 解决ubuntu中vi不能正常使用方向键与退格键的问题
  12. 转载-smarty教程(基本语法)
  13. web版本控制
  14. 服务器编程入门(1)TCP/IP协议族
  15. Android -- 从源码的角度一步步打造自己的TextView
  16. C#版(打败97.89%的提交) - Leetcode 202. 快乐数 - 题解
  17. R语言通过loess去除某个变量对数据的影响--CNV分析
  18. DRF框架固定配置
  19. 超链接a标签的href与onclick中使用javascript的区别
  20. .Net学习心得

热门文章

  1. java-設計模式-抽象工場模式
  2. Django用mongoengine操作mongodb
  3. Redis 集群方案什么情况下会导致整个集群不可用?
  4. 集合学习之"将集合对象List<Product>转换为Map"
  5. HTML5 版的flappy bird
  6. 前端眼里的docker
  7. onActivityResult执行两次问题
  8. lunix或者centos服务器下如何下载自己在github上面的项目代码
  9. 自学java如何快速地达到工作的要求?
  10. 面渣逆袭:RocketMQ二十三问