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属性
随机推荐
- echars line 底部图例强制不换行(滚动),修改图例样式
{ grid: { left: '5px', right: '10px', top: '10px', bottom: '40px', containLabel: true }, tooltip: { ...
- 简单App项目的运行
我和我的同伴两个人从网上下载一个仿微信登录源码,导入到eclipse中,两人结队练习这个源代码的操作, 运行项目到Android虚拟器上,显示效果为 我们还运行这个项目到手机设备上,显示效果为 接 ...
- 描述符(__get__和__set__和__delete__)
目录 一.描述符 二.描述符的作用 2.1 何时,何地,会触发这三个方法的执行 三.两种描述符 3.1 数据描述符 3.2 非数据描述符 四.描述符注意事项 五.使用描述符 5.1 牛刀小试 5.2 ...
- go get 获取被墙依赖包解决方法
前言: 随着 go1.11 的发布,go 官方引入了 go module 来解决依赖管理问题,go module 被集成到原生的 go cmd 中,但是如果你的代码库在$GOPATH中,go1.11 ...
- The trap of Bash trap
Can you spot the problem with the following Bash script? resource_created="false" function ...
- dotnetcore实现Aop
dotnetcore实现Aop Aop大家都不陌生,然而今天给大家不将讲官方的filter,今天给大家分享一个轻量级的Aop解决方案(AspectCore) 什么是AspectCore AspectC ...
- SpringCloud的入门学习之Eureka(Eureka的单节点)
SpringCloud--->Spring生态体系的微服务架构:https://spring.io/ 官网贴图,如下所示,介绍了微服务的架构体系(话说,英语好读官网,可能很爽吧,没体验过). 1 ...
- Java开发桌面程序学习(一)——JavaFx+Jfoenix初始以及搭建
Java开发桌面程序学习(一)--JavaFx+Jfoenix初始以及搭建 前言 想做一个Java的桌面程序,但是,使用原生的Swing感觉又十分麻烦,那个布局都是拿代码设置,看着十分的乱,偶然的情况 ...
- 基于C# WinForms窗体——飞机大战
原文:基于C# WinForms窗体——飞机大战 using System; using System.Collections.Generic; using System.ComponentModel ...
- 记一次asp.net core 在iis上运行抛出502.5错误
asp.net core 在iis上运行抛出502.5异常的部分原因以及解决方案 环境说明 已安装 .net core runtime 2.1.401 已安装 .net core windows ho ...