python appium server代码启动和关闭遇到的坑

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

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

在步骤中说坑。。。(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一下上述的commandspa

2.拿到了命令只要写入进代码就好了。这里用到了os模块,最简单的os.system就能够知足。code

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

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

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

具体代码以下:进程

# 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())

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

相关文章
相关标签/搜索