前戏

前面我们都是在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服务的更多相关文章

  1. appium+Python 启动app(二)

    我们上步操作基本完成,下面介绍编写Python脚本启动app 打开我们pycharm新建.py文件 第一步:输入Python脚本代码: #coding=utf-8 from appium import ...

  2. appium+Python 启动app(一)

    当我们appium和Python环境都配置好了,如何启动我们第一个app呢?下面介绍appium+Python启动app的操作步骤,为了能够详细查看,我们这里使用夜游神模拟器进行示范. 测试项目:QQ ...

  3. appium+python 启动一个app步骤

    询问度娘搭好appium和python环境,开启移动app自动化的探索(基于Android),首先来记录下如何启动待测的app吧! 如何启动APP?1.获取包名:2.获取launcherActivit ...

  4. Windows&Appium&Python自动化测试-Appium安装

    一.安装node.js 官方下载地址为:https://nodejs.org/en/download 傻瓜式安装即可,安装完成后,CMD中运行node -v查看版本号 输入npm 出现如上图信息,表示 ...

  5. Appium + python - 监控appium server start

    import osimport time as t def start_appium(port = 4723,udid="4871660c"): a = os.popen(&quo ...

  6. Python 启动本地服务

    在 Linux 服务器上或安装了 Python 的机器上,Python自带了一个WEB服务器 SimpleHTTPServer,我们可以很简单的使用  python -m SimpleHTTPServ ...

  7. appium+python自动化☞appium python api大全

    整理了一些常用的appium python api,供学习使用...

  8. Appium+python启动虚拟机上的app

    查看appPackage和appActivity方法: 1.先在cmd命令行输入  adb logcat ActivityManager:I *:s 2.点击虚拟机启动app即可查看,/前是appPa ...

  9. appium+Python 启动app(三)登录

    我们根据前面的知识点,用uiautomatorviewer工具来获取我们当前的元素 (注:uiautomatorviewer 是 android sdk 自带的) 知识点:appium的webdriv ...

  10. Appium+python自动化-appium元素定位

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

随机推荐

  1. faster-rcnn错误信息 : tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [21] rhs shape= [2]

    faster-rcnn错误信息 : tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shap ...

  2. Log4j2之ThreadContext

    简介 系统中使用log4j2作为日志系统,然而在高并发的情况下,多次请求的日志参杂在一起,要跟踪某个用户一次的请求操作所有日志是很麻烦的.幸运的是log4j中有相应的解决方案. NDC和MDC NDC ...

  3. 深入理解ES6之解构

    变量赋值的痛 对象 let o = {a:23,b:34}; let a = o.a; let b = o.b; 如上文代码,我们经常会遇到在各种场合需要获取对象中的值的场景,舒服一点的是获取单个属性 ...

  4. python接口自动化6-参数化关联

    前言 接口中我们经常需要用到参数关联,比如,登录token,需要传给后面的参数使用,又比如要查看某个商品需要将商品的id传入下一个接口使用. 等等,所以我们必要学会 re 正则获取,或者返回json获 ...

  5. shell 命令 tar -zxvf 解压 tar -zcvf 压缩

    tar -zxvf 解压 tar -zcvf 压缩

  6. Docker - 卷组管理(三)

    一.不指定宿主机目录 首先运行一个nginx容器 docker run -d --name mynginx -p 8080:80 -v /usr/share/nginx/html nginx --na ...

  7. Linux网络——查看网络连接情况的命令

    Linux网络——查看网络连接情况的命令 摘要:本文主要学习了Linux中用来查看网络连接情况的命令. hostname命令 hostname命令用于显示和设置系统的主机名称,设置只是临时生效,永久生 ...

  8. Java生鲜电商平台-微服务架构概述

    Java生鲜电商平台-微服务架构概述 单体架构存在的问题 在传统的软件技术架构系统中,基本上将业务功能集中在单一应用内,或者是单一进程中.尽管现代化的软件架构理论以及设计原则已推广多年,但实际技术衍化 ...

  9. maven下载,安装,配置

    Eclipse配置maven  官网:http://maven.apache.org/ 1.解压你在maven下载到的压缩包,一般把它和jdk放在一起. 2.安装maven在电脑上. 鼠标右键点击计算 ...

  10. JS基础语法---分支语句之:switch-case语句---3个练习

    switch-case语句---分支语句---多分支语句 语法: switch(表达式){ case 值1:代码1;break; case 值2:代码2;break; case 值3:代码3;brea ...