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()
appium--python启动appium服务的更多相关文章
- appium+Python 启动app(二)
我们上步操作基本完成,下面介绍编写Python脚本启动app 打开我们pycharm新建.py文件 第一步:输入Python脚本代码: #coding=utf-8 from appium import ...
- appium+Python 启动app(一)
当我们appium和Python环境都配置好了,如何启动我们第一个app呢?下面介绍appium+Python启动app的操作步骤,为了能够详细查看,我们这里使用夜游神模拟器进行示范. 测试项目:QQ ...
- appium+python 启动一个app步骤
询问度娘搭好appium和python环境,开启移动app自动化的探索(基于Android),首先来记录下如何启动待测的app吧! 如何启动APP?1.获取包名:2.获取launcherActivit ...
- Windows&Appium&Python自动化测试-Appium安装
一.安装node.js 官方下载地址为:https://nodejs.org/en/download 傻瓜式安装即可,安装完成后,CMD中运行node -v查看版本号 输入npm 出现如上图信息,表示 ...
- Appium + python - 监控appium server start
import osimport time as t def start_appium(port = 4723,udid="4871660c"): a = os.popen(&quo ...
- Python 启动本地服务
在 Linux 服务器上或安装了 Python 的机器上,Python自带了一个WEB服务器 SimpleHTTPServer,我们可以很简单的使用 python -m SimpleHTTPServ ...
- appium+python自动化☞appium python api大全
整理了一些常用的appium python api,供学习使用...
- Appium+python启动虚拟机上的app
查看appPackage和appActivity方法: 1.先在cmd命令行输入 adb logcat ActivityManager:I *:s 2.点击虚拟机启动app即可查看,/前是appPa ...
- appium+Python 启动app(三)登录
我们根据前面的知识点,用uiautomatorviewer工具来获取我们当前的元素 (注:uiautomatorviewer 是 android sdk 自带的) 知识点:appium的webdriv ...
- Appium+python自动化-appium元素定位
前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性
随机推荐
- Vue 监听鼠标左键 鼠标右键以及鼠标中键修饰符click.left&contextmenu&click.middle
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- hashlib和hmac模块
目录 一.hashlib模块 1.0.1 hash是什么 1.0.2 撞库破解hash算法加密 一.hashlib模块 1.0.1 hash是什么 hash是一种算法(Python3.版本里使用has ...
- MySQL中使用group_concat遇到的坑
在使用group_concat的过程中遇到个问题,这里记录一下:在MySQL中有个配置参数group_concat_max_len,它会限制使用group_concat返回的最大字符串长度,默认是10 ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 12
18.9 管理表books实例 在Web项目中,几乎所有模块都要和数据表打交道,而对表的管理无非就是增.删.改.查等操作,所以熟练掌握对表进行管理的这些常见操作是十分有必的.本例为了能更好地展示PD ...
- IT兄弟连 Java语法教程 流程控制语句 循环结构语句2
双重for循环 如果把一个循环放在另一个循环体中,那么就可以形成嵌套循环,也就是双重for循环,当然嵌套循环也可以是for循环嵌套while循环,也可以是while循环嵌套while循环……,即各种类 ...
- mysql 数据库分表小实例
项目开发中,我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈. 当出现这种情况时,我们可以考虑分表,即将单 ...
- AQS(抽象队列同步器)
AQS(全称为AbstractQueuedSynchronizer),即抽象队列同步器,它维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列. state的访问方 ...
- 科技风商务项目管理PPT模板
模板来源:http://ppt.dede58.com/peixunyanjiang/26267.html
- 多线程学习二:线程池 ExecutorService
创建线程池的2种方式: 使用线程池方式1--Runnable接口: 通常,线程池都是通过线程池工厂创建,再调用线程池中的方法获取线程,再通过线程去执行任务方法. Executors:线程池创建工厂类: ...
- python web框架Django入门
Django 简介 背景及介绍 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以 ...