python appium server代码启动和关闭遇到的坑
第一次使用博客,小白级,互相交流,有说的不对的地方欢迎来喷!!!
自动化的目的就是减少人工成本,如果每次跑自动化用例时都要手动起appium客户端,太费事了~~故,将appium server的调起和关闭写在代码中是必要的一步。
在步骤中说坑。。。(ps:小白的坑,大神可能会嘲笑~~呼呼~~)
1.将appium客户端打开,能够看到启动server其实是这句话> Launching Appium server with command: D:\Program Files (x86)\Appium\node.exe lib\server\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 23 --automation-name Appium --device-name "MI 3W" --language en --log-no-color,如下图:
需要将node.exe替换成路径node_modules\appium\。cmd命令其实就是node一下上述的command
2.拿到了命令只要写入进代码就行了。这里用到了os模块,最简单的os.system就可以满足。
关于路径的空格、()、\、"的转义最是坑爹
先将D:\Program Files (x86)\镜像成一个w:,然后转义\\和\",
测试机的Android版本对应的appium version和手机device name是测试机独有属性,所以定义函数时加了这两个参数
具体代码如下:
# coding=utf-8
import os
import time # os.system("subst w: \"D:\Program Files (x86)\"") #镜像用一次就行,所以我注释掉了
def start_AppiumS(devicename,level):
t = "start node w:\\Appium\\node_modules\\appium\\lib\\server\\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version "+level+" --automation-name Appium --device-name \"" + devicename + "\" --language zh_CN --log-no-color"
os.system(t)
time.sleep(2)
return
这里要刻意强调一下,os.system会阻塞进程,为避免不影响执行下一步,在命令前面一定要加start
到这里为止,启动appium server已经搞定,下面开始写杀appium server
1.杀appium server主要是在于取得node的进程端口号
可用命令查询端口号 netstat -aon |findstr 4723
用os.popen获取执行命令后的返回值,从中提取出需要的pid端口号
说一下此处我遇到的坑吧,先上图

按4723查到的进程有很多,os.popen获取后是以字符型存储的,且有许多空格。此处用了最笨的小白方法,去空格分割字符串~~~~~汗汗汗-_-||
代码如下:
def kill_AppiumS():
process = os.popen("netstat -aon |findstr 4723").read()
pid = process.replace(' ','').split(" ")[2]
print(pid)
m = os.popen("taskkill -f -pid %s" % pid)
print(m.read())
有不对或者需要改进的地方,欢迎大神吐槽~~
python appium server代码启动和关闭遇到的坑的更多相关文章
- Python+Appium学习之启动手机APP或者浏览器
一.启动浏览器:pycharm中python脚本如下: from appium import webdriver desired_caps ={ 'platformName':'Android', ' ...
- Appium 脚本代码中启动appium server
import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.service.local.Appiu ...
- Appium Server源码分析之作为Bootstrap客户端
Appium Server拥有两个主要的功能: 它是个http服务器,它专门接收从客户端通过基于http的REST协议发送过来的命令 他是bootstrap客户端:它接收到客户端的命令后,需要想办法把 ...
- (干货分享)mac python+appium环境搭建
因为mac本自带python2.x(不建议卸载,因为本本本身有很多依赖与此),所以装python3的过程极其坎坷,勉强装好后也总是各种报错.这次装appium环境,直接把原来的python3卸了,用h ...
- 记录下通过Java代码打开cmd启动appium server及在使用过程中碰到的问题
1.appium server启动后,执行测试脚本,appium日志报错,提示appium setting未安装(原因是小米手机在用appium desktop调试时总是提示是否安装appium se ...
- Appium Server 源码分析之启动运行Express http服务器
通过上一个系列Appium Android Bootstrap源码分析我们了解到了appium在安卓目标机器上是如何通过bootstrap这个服务来接收appium从pc端发送过来的命令,并最终使用u ...
- ros 使用python代码启动launch文件
在开发中我们经常会遇到使用python代码启动launch文件这样的问题.一般的做法是使用subprocess调用roslaunch.但是这种方法使用起来并不方便.要涉及到自己去控制进程的状态.由于r ...
- (appium+python)UI自动化_02_appium启动手机app
前提:需先安装配置好appium+python自动化环境,已配置好环境的小伙伴可以参考以下步骤启动Android app,具体步骤如下: 一.USB连接手机 (1)手机USB连接电脑 (2)手机打开开 ...
- 移动端UI自动化Appium测试——Appium server两种启动方式
执行自动化测试之前,需要先运行appium server,这样才能形成server与java client的通信,启动server有两种方式,一种是命令,一种是按钮图标,具体使用如下: 1.用命令启动 ...
随机推荐
- 什么是redis的缓存雪崩与缓存穿透?如何解决?
一.缓存雪崩 1.1 什么是缓存雪崩? 首先我们先来回答一下我们为什么要用缓存(Redis): 1.提高性能能:缓存查询是纯内存访问,而硬盘是磁盘访问,因此缓存查询速度比数据库查询速度快 2.提高并发 ...
- jdk 8 HashMap源码解读
转自:https://www.cnblogs.com/little-fly/p/7344285.html 在原来的作者的基础上,增加了本人对源代码的一些解读. 如有侵权,请联系本人 这几天学习了Has ...
- Flex布局在小程序的使用
一篇旧文,上手小程序时做的一些探索 Flex布局是一种十分灵活方便的布局方式,目前主流的现代浏览器基本都实现了对Flex布局的完全支持.而在微信小程序中,IOS端使用的渲染引擎WKWebView和安卓 ...
- D2Admin 8月更新: 高级数据持久化|标签页右键|模块化等
剧透:这次,D2Admin 带来了其它同类模板都没有的"花式"数据持久化功能,以及极少同类产品才有的标签页右键控制... 概述 D2Admin 7月份更新到了 1.1.5 版本 相 ...
- 动态规划 洛谷P4017 最大食物链计数——图上动态规划 拓扑排序
洛谷P4017 最大食物链计数 这是洛谷一题普及/提高-的题目,也是我第一次做的一题 图上动态规划/拓扑排序 ,我认为这题是很好的学习拓扑排序的题目. 在这题中,我学到了几个名词,入度,出度,及没有环 ...
- python根据日期判断星期几(超简洁)
代码: from datetime import datetime def getWeek(week): print(date + "是星期" + str(week + 1)) d ...
- 牛客网-剑指Offer 二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- vConsole移动端调试利器
图示: , 简单的几步操作: 1. 引入cdn 可以从https://www.bootcdn.cn/vConsole/下载,也可以下载保存在本地,直接引用 <!DOCTYPE html ...
- EMS查看单个邮箱的已用空间
Exchange查询单个邮箱用户使用状态. 查看用户"wsj"的邮箱使用状态 键入以下命令: Get-MailboxStatistics wsj | FL DiplayName,T ...
- C++STL 中的数值算法(iota、accumulate、adjacent_difference、inner_product、partial_sum)
以下算法均包含在头文件 numeric 中 ##1.iota 该函数可以把一个范围内的序列从给定的初始值开始累加 先看用法. 例: 假设我需要一个长度为10,从5开始递增的序列 vector<i ...