python+Appium自动化:python多线程多并发启动appium服务

2023-11-18

Python启动Appium 服务

使用Dos命令或者bat批处理来手动启动appium服务,启动效率低下。如何将启动Appium服务也实现自动化呢?

这里需要使用subprocess模块,该模块可以创建新的进程,并且连接到进程的输入、输出、错误等管道信息,并且可以获取进程的返回值。

场景

使用Python启动2台appium服务,端口配置如下:

  • Appium服务器端口:4723,bp端口为4724
  • Appium服务器端口:4725,bp端口为4726

说明:bp端口( –bootstrap-port)是appium和设备之间通信的端口,如果不指定到时无法操作多台设备运行脚本

工程文件中新建一个文件夹

新建multi_subprocess.py

# -*- coding: utf-8 -*-#

import subprocess
from time import ctime

def appium_start(host,port):
    # bp端口( –bootstrap-port)是appium和设备之间通信的端口
    bootstrap_port = str(port + 1)
    cmd = 'start /b appium -a ' + host + ' -p '+ str(port) + ' -bp ' + str(bootstrap_port)

    print('%s at %s' % (cmd, ctime()))
    subprocess.Popen(cmd, shell=True, stdout=open('../appiumlog/'+str(port)+'.log', 'a'), stderr=subprocess.STDOUT)

if __name__ == '__main__':
    host = '127.0.0.1'
    port = 4723
    appium_start(host,port)

效验是否成功 :

1.cmd中输入netstat -ano | findstr 端口号(4723)

2. 在appiumlog路径中生成4723.log日志文件

终止appium服务

taskkill -f -pid appium进程,如下:

多个appium服务启动

if __name__ == '__main__':
    host = '127.0.0.1'
    for i in range(2):
        port=4723+2*i
        appium_start(host,port)

多进程并发启动appium服务

上面还不是并发执行启动appium,因此需要使用多进程来实现并发启动。
同样需要引入multiprocessing多进程模块。

muti_appium_sync.py

import multiprocessing
import subprocess
from time import ctime

def appium_start(host, port):

    bootstrap_port = str(port + 1)
    cmd = 'start /b appium -a ' + host + ' -p ' + str(port) + ' --bootstrap-port ' + str(bootstrap_port)

    print('%s at %s' % (cmd, ctime()))
    subprocess.Popen(cmd, shell=True,stdout=open('./appiumlog/'+str(port)+'.log', 'a'), stderr=subprocess.STDOUT)


#构建appium进程组
appium_process=[]

#加载appium进程
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__':
    #并发启动appium服务
    for appium in appium_process:
        appium.start()
    for appium in appium_process:
        appium.join()

下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

资料获取方式 :

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python+Appium自动化:python多线程多并发启动appium服务 的相关文章

随机推荐

  • QT_内存

    深度解析QMap与QHash 转载于 http www cnblogs com 5iedu p 5835715 html
  • Redis——持久化数据

    Redis被称为是内存数据库 那是因为它会将其所有数据存储在内存里 因此Redis具有强劲的速度性能 但是 也正因为数据存储在内存中 当Redis重启后 所有存储在内存的数据就会丢失 为了使得数据持久化 Redis提供了两种方式 RDB方式
  • VGG预训练模型网络结构详解——以VGG16为例

    VGG卷积神经网络是牛津大学在2014年提出来的模型 当这个模型被提出时 由于它的简洁性和实用性 马上成为了当时最流行的卷积神经网络模型 它在图像分类和目标检测任务中都表现出非常好的结果 在2014年的ILSVRC比赛中 VGG 在Top
  • Win10环境+ CUDA9.0 +CUDNN7.0+TensorFlow1.7/1.6/1.5配置

    前言 很多小伙伴在选择CUDA版本和cudnn版本上有疑问 这里简短的说一下 希望能帮到各位小伙伴 我在网上看到有人说 要根据自己的显卡来选择CUDA 其实是错误的 你可以下载自己所需要的CUDA版本 这只是个驱动而已 CUDA的版本和cu
  • kubernetes系列二之Deployment的管理和使用

    目录 1 Kubernetes管理对象 Pod ReplicationController 简称RC ReplicaSet 简称RS Deployment 逻辑关系 从小到大的管理逻辑 2 创建Deployment 运行一个Deployme
  • Lack of free swap space on 192.168.3.1

    zabbix健康报错 Lack of free swap space on 192 168 3 1 解决办法 先查看磁盘swap磁盘容量 是因为Zabbix监控没有考虑虚拟主机的交换空间情况 解决办法修改配置 选择 Lack of free
  • easypoi校验数据时获取excel行号和错误信息

    目录 什么是easypoi easypoi校验excel实体类怎么获取错误信息和excel的行号 需要用到的excel实体类 调用的客户端代码 什么是easypoi easypoi功能如同名字easy 主打的功能就是容易 让一个没见接触过p
  • 华为校招机试题- 数组的中心位置-2023年

    题目描述 给你一个整数数组nums 请计算数组的中心位置 数组中心位置是数组的一个下标 其左侧所有元素相乘的积等于右侧所有元素相乘的积 数组第一个元素的左侧积为1 最后一个元素的右侧积为1 如果数组有多个中心位置 应该返回最靠近左边的那一个
  • 修改lvgl Linux demo使用tslib获取触摸坐标

    1 为什么要修改 o 交叉编译官方lvgl linux demo发现触摸坐标不准确 官方demo获取坐标的做法是 evdev fd open EVDEV NAME O RDWR O NOCTTY O NDELAY if evdev fd 1
  • 再谈TCP三次握手/四次挥手

    TCP三次握手 四次挥手 在TCP IP协议中 TCP协议提供可靠的连接服务 采用三次握手建立一个连接 如图1所示 1 第一次握手 建立连接时 客户端A发送SYN包 SYN j 到服务器B 并进入SYN SEND状态 等待服务器B确认 2
  • 比PS还好用!Python 20行代码批量抠图

    抠图前 vs Python自动抠图后 在日常的工作和生活中 我们经常会遇到需要抠图的场景 即便是只有一张图片需要抠 也会抠得我们不耐烦 倘若遇到许多张图片需要抠 这时候你的表情应该会很有趣 Python能够成为这样的一种工具 在只有一张图片
  • cypress——前端自动化测试框架

    前端自动化测试概述 MVC Model View Controller 模式开始流行 MVC是模型 Model 视图 View 和控制器 Controller 的缩写 它使业务逻辑 数据 界面显示分离 这时Web开发属于View层 Ajax
  • Unity InputSystem 实现同一按键单击、双击、长按执行不同逻辑

    最近学习了一下Unity InputSystem 该系统可用于实现 管理复杂的操作逻辑 上限很高 但由于它有一定的学习成本 导致一些和我一样的小白一入门时不得要领 之前卡住我的一个需求就是通过InputSystem 实现同一按键单击 双击
  • java 0-9 A-Z进位函数

    java 可以包含数字0 9 和字母A Z的加法编码规则 例如城市编码 2位 可以是0 9 也可以是A Z 那么实际编码顺序则是0 1 2 3 4 5 6 7 8 9 A B C D E F G A9的下一个编码是AA AZ的下一个编码是B
  • html背景毛玻璃效果代码,css3毛玻璃效果(背景虚化)

    wrap h3 font size 18px color ffffff wrap p font size 14px color ffffff font variant ligatures common ligatures discretio
  • 人工智能--深度学习两层全连接神经网络搭建

    系列文章目录 人工智能 深度学习从感知机到神经网络 人工智能 深度学习神经网络神经元的实现 文章目录 系列文章目录 前言 一 多层神经网络的结构 二 两层全连接神经网络 1 搭建模型 2 神经元传递理论 3 激活函数的确定 三 神经网络实现
  • exe和dll库分离

    c 在写程序的时候一般会用到第三方库 我们在引用后 一般会把第三方库复制到debug生成的目录下 如果第三方库的dll很少那还可以 如果第三方库的dll很多 那么就会和自己生成的exe混在一起 看着极其混乱 所以有时候会把第三方库文件单独的
  • 高端算法总结

    1 合并排序 2 两次筛选 3 BANSAC 4 动态规划 5 Karatsuoa 乘法 6 快速傅里叶变换 7 最大流量算法 8 learing学习算法 9 RSA 10 Strassen 11 单纯型算法 12 奇异值分解 13 求解线
  • upload-labs靶场第一关——第九关

    Pass 01JS检测绕过 1 根据提示 从上述代码中可以看出 上述代码使用了JavaScript脚本 在前端对用户上传文件的类型进行了检测 因此 我们只需要先上传符合JavaScript脚本要求的数据包 然后使用Burpsuit抓取该数据
  • python+Appium自动化:python多线程多并发启动appium服务

    Python启动Appium 服务 使用Dos命令或者bat批处理来手动启动appium服务 启动效率低下 如何将启动Appium服务也实现自动化呢 这里需要使用subprocess模块 该模块可以创建新的进程 并且连接到进程的输入 输出