appium--python启动appium服务
前戏
前面我们都是在cmd下通过输入appium加端口号来启动服务的,在我们做自动化的时候,我们当然不希望我们手动启动appium服务,而是希望通过脚本自动启动appium服务。
我们可以使用subprocess模块,该模块可以创建新的进程,并且连接到进程的输入,输出,错误等管道信息,并且可以获取进程的返回值
使用python启动appium服务,端口配置如下
- appium服务器端口:4723,bp端口为4724
- appium服务器端口:4725,bp端口为4726
说明:bp端口(--bootstrap-port)是appium和设备之间通信的端口,如果不指定到时无法操作多台设备 运行脚本
启动单个服务
import subprocess def appium_start(host, port): bootstrap_port = str(port + 1) cmd = 'start /b appium -a '+host+' -p '+str(port)+' -bp '+str(bootstrap_port) print(cmd) subprocess.Popen(cmd, shell=True, stdout=open('../test_case/'+str(port)+'.log','a'),stderr=subprocess.STDOUT) if __name__ == '__main__': host = '127.0.0.1' port = 4723 appium_start(host, port)
结果:
start /b appium -a 127.0.0.1 -p 4723 -bp 4724
使用os模块启动
注意:如果端口已经启动了,在启动是不会报错的,放心执行吧,但是如果这个端口被其他服务占用了,则会报错
import os def appium_start(host, port): bootstrap_port = str(port + 1) cmd = 'appium -a %s -p %s'%(host, port) os.system(cmd) if __name__ == '__main__': host = '127.0.0.1' port = 4723 appium_start(host, port)
启动校验
启动后我们需要校验是否启动成功,校验方法如下
1.查看有没有生成对应的log文件,里面的appium日志
2.使用如下命令来查看
netstat -ano | findstr 端口号
netstat命令是一个监控TCP/IP网络非常有用的工具,它可以显示路由表,实际的网络连接以及每一个网络接口设备的状态信息,输入netstat -ano回车,可以查看本机开放的全部端口,输入命令netstat -h可以查看全部参数含义
关闭appium服务
上面我们启动了appium的服务,但不能一直不关闭,会消耗我们的系统资源,所以我们一般在执行完自动化之后,希望关闭掉appium服务
关闭服务也有两种方式
1.通过netstat命令找到对应的appium进程pid然后在资源管理器中关闭
2.使用命令关闭
taskkill -f -pid appium进程id
启动多个appium服务
上面我们是启动了一个appium服务,启动多个服务很简单,只需要在执行环境中循环调用即可
import subprocess def appium_start(host, port): bootstrap_port = str(port + 1) cmd = 'start /b appium -a '+host+' -p '+str(port)+' -bp '+str(bootstrap_port) print(cmd) subprocess.Popen(cmd, shell=True, stdout=open('../test_case/'+str(port)+'.log','a'),stderr=subprocess.STDOUT) if __name__ == '__main__': host = '127.0.0.1' port = 4723 for i in range(2): port = 4723+2*i appium_start(host, port)
多进程启动多个appium服务
import subprocess import multiprocessing def appium_start(host, port): bootstrap_port = str(port + 1) cmd = 'start /b appium -a '+host+' -p '+str(port)+' -bp '+str(bootstrap_port) print(cmd) subprocess.Popen(cmd, shell=True, stdout=open('../test_case/'+str(port)+'.log','a'),stderr=subprocess.STDOUT) appium_process = [] # 进程组 for i in range(2): host = '127.0.0.1' port = 4723 + 2*i appium = multiprocessing.Process(target=appium_start, args=(host, port)) appium_process.append(appium) if __name__ == '__main__': for appium in appium_process: appium.start() for appium in appium_process: appium.join()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)