appium--python启动appium服务

简介: 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()

相关文章
|
2月前
|
JSON API 数据库
解释如何在 Python 中实现 Web 服务(RESTful API)。
解释如何在 Python 中实现 Web 服务(RESTful API)。
26 0
|
2月前
|
数据采集 测试技术 API
python爬虫之Appium 的使用
搭建appium环境,appium基本使用,API操作等等
47 0
|
8月前
|
JSON Java 测试技术
Python + Appium 自动化操作微信入门
Python + Appium 自动化操作微信入门
143 0
|
8月前
|
前端开发 Python
如何用Python快速搭建一个文件传输服务
如何用Python快速搭建一个文件传输服务
|
28天前
|
数据采集 Java API
python并发编程: Python使用线程池在Web服务中实现加速
python并发编程: Python使用线程池在Web服务中实现加速
18 3
python并发编程: Python使用线程池在Web服务中实现加速
|
28天前
|
数据采集 Java Python
python并发编程:Python在FastAPI服务中使用多进程池加速程序运行
python并发编程:Python在FastAPI服务中使用多进程池加速程序运行
52 0
|
2月前
|
存储 监控 数据库
Python语言的通用操作系统服务
Python语言的通用操作系统服务
|
2月前
|
数据采集 JSON NoSQL
python爬虫 Appium+mitmdump 京东商品
python 爬虫 Charles + appium + mitmproxy 实现 app 京东商品数据获取
32 0
|
2月前
|
负载均衡 Java Nacos
python flask服务如何注册到nacos
一文讲清楚python flask服务如何注册到nacos
100 2
python flask服务如何注册到nacos
|
2月前
|
设计模式 安全 Shell
Python生成Web服务
Python生成Web服务
16 0