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属性
随机推荐
- C语言验证哥德巴赫猜想
#include<stdio.h>int f(int x);int main(void){ int n,i; scanf("%d",&n); for( ...
- BoW算法及DBoW2库简介(二)
一.BoW算法 用OpenCV实现了最简单的BoW算法进行了一次小规模的图像检索任务,使用UKbench数据库,算法原理和网上的描述差不多,使用K-means算法进行聚类,这里使用KDTree算法进行 ...
- python--基础知识点梳理(三)深浅拷贝、进线协程、os和sys、垃圾回收机制、读文件的三种方式
深拷贝与浅拷贝 import copy 浅拷贝:将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象.copy.copy() 深拷贝:将一个对象拷贝到另一个对象中,新开辟了一个 ...
- js scroll事件
滚动改变头部颜色,当滚动到最顶端头部颜色还原 滚动前 滚动后 代码
- Fuzzy finder(fzf+vim) 使用入门指南
今天无意中尝试了fzf,才发现这个工具的威力无穷,毕竟是非常好的工具,第一次都把它的优点都释放出来也不现实,先熟悉一下吧,后面在实战中再不断地学习总结. 它是什么: Fuzzy finder 是一款使 ...
- 1+x 证书 Web 前端开发 css 专项练习
官方QQ群 1+x 证书 Web 前端开发 css 专项练习 http://blog.zh66.club/index.php/archives/192/
- 转载-SpringBoot结合线程池解决多线程问题实录;以及自己的总结
原文地址:https://blog.csdn.net/GFJ0814/article/details/92422245 看看这篇文章(继续学习):https://www.jianshu.com/p/3 ...
- 使用paramiko模块进行封装,远程操作linux主机
import time import paramiko class HandleParamiko: ''' 定义一个linux处理类 ''' def __init__(self, hostname, ...
- 在 .NET Core 下使用 SixLabors.ImageSharp 操作图片文件(放大、缩小、裁剪、加水印等等)的几个小示例
1. 基础 1.1 将图片的宽度和高度缩小一半 直接贴代码了: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup ...
- c#日期和时间戳互转
using System; using System.Collections.Generic; using System.Data; using System.Reflection; namespac ...