启动appium服务的2种方法(python脚本&cmd窗口)

简介: 启动appium服务的2种方法(python脚本&cmd窗口)

1. 通过cmd窗口命令启动

1.1 启动单个appium服务

打开cmd,直接输入:appium

这里默认启动的端口是4723,如果没有被占用的情况

C:\Users\carl.DJ>appium
[Appium] Welcome to Appium v1.17.1
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

也可以直接输入:appium -p 4723


C:\Users\carl.DJ>appium -p 4723
[Appium] Welcome to Appium v1.17.1
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

1.2 启动多个appium服务

启动多个appium,就是指定端口号即可 :appium -p 端口号

启动appium服务1


C:\Users\carl.DJ>appium -p 4723
[Appium] Welcome to Appium v1.17.1
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

启动appium服务2


C:\Users\carl.ding>appium -p 4725
[Appium] Welcome to Appium v1.17.1
[Appium] Non-default server args:
[Appium]   port: 4725
[Appium] Appium REST http interface listener started on 0.0.0.0:4725C:\Users\carl.ding>appium -p 4725
[Appium] Welcome to Appium v1.17.1
[Appium] Non-default server args:
[Appium]   port: 4725
[Appium] Appium REST http interface listener started on 0.0.0.0:4725

以上时通过cmd命令来启动。

是不是很简单。


2. 通过python脚本来启动

但是呢,作为一只老鱼,觉得手动启动太多服务,有点费劲,于是乎~~

搞个脚本,一次启动多个服务,

剩下的时间,嘿嘿…是不是很香~


2.1 启动单个appium服务

# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-6-30
"""
import subprocess
import time
def appium_start(host,port):
    '''
    启动appium server
    :param host:
    :param port:
    :return:
    '''
    #指定bp端口号
    bootstrap_port = str(port+1)
    #把在cmd弹窗输入的命令,直接写到这里
    # cmd = 'start /b appium -a ' + host+' -p '+str(port) +' -bp '+ str(bootstrap_port)
    #去掉 “/b”,即可以打开cmd弹窗运行
    cmd = 'start  appium -a ' + host+' -p '+str(port) +' -bp '+ str(bootstrap_port)
    # 打印输入的cmd命令,及时间
    print("%s at %s " %(cmd,time.ctime()))
    subprocess.Popen(cmd,shell=True,stdout=open('./appium_log/'+str(port)+'.log','a'),stderr=subprocess.STDOUT)
if __name__ == '__main__':
    host = '127.0.0.1'
    #运行一个端口
    port = 4723
    appium_start(host,port)
    #运行2个端口


2.2 启动多个appium服务

# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-6-30
"""
import subprocess
import time
def appium_start(host,port):
    '''
    启动appium server
    :param host:
    :param port:
    :return:
    '''
    #指定bp端口号
    bootstrap_port = str(port+1)
    #把在cmd弹窗输入的命令,直接写到这里
    cmd = 'start /b appium -a ' + host+' -p '+str(port) +' -bp '+ str(bootstrap_port)
    #去掉 “/b”,即可以打开cmd弹窗运行
    #cmd = 'start  appium -a ' + host+' -p '+str(port) +' -bp '+ str(bootstrap_port)
    # 打印输入的cmd命令,及时间
    print("%s at %s " %(cmd,time.ctime()))
    subprocess.Popen(cmd,shell=True,stdout=open('./appium_log/'+str(port)+'.log','a'),stderr=subprocess.STDOUT)
if __name__ == '__main__':
    host = '127.0.0.1'
    #运行2个端口,使用for循环即可
    for i in range(2):
        port = 4723 + 2*1
        appium_start(host,port)

这里有3点说一下:

一、端口号设置

①Appium服务器端口:4723 ,bp端口:4724

①Appium服务器端口:4725 ,bp端口:4726


可以看到,appium服务器端口和bp端口是相差一位的,

那什么是bp端口呢,

>>bp端口(–bootstrap-port),是appium和设备之间通讯的端口,如果不能指定到,则无法运行多台设备脚本。

这是不是就明白了。

二、脚本命令写法

在cmd窗口,我们运行设备,是 appium -a host -p 端口号 -bp 端口号

那么我们写在python脚本就是一样的,只不过参数化而已。


/b :不打开弹窗运行


三、输入到日志

stdout=open('./appium_log/'+str(port)+'.log','a')

3. 启动校验

3.1 通过cmd命令查看

3.1.1 查看指定端口号

netstat -ano |findstr 端口号

3.1.2 查看全部端口号

netstat -ano

3.2 通过生成的log文件查看

直接在生成的log文件中,查看即可

①生成的log文件

image.png

②log文件的内容

image.png

目录
相关文章
|
2天前
|
存储 Linux Shell
python移除/删除非空文件夹/目录的最有效方法是什么?
python移除/删除非空文件夹/目录的最有效方法是什么?
8 0
|
2天前
|
缓存 人工智能 算法
编写高效的Python脚本:性能优化的策略与技巧
编写高效的Python脚本需要综合考虑多个方面,包括代码结构、数据结构和算法选择等。本文将探讨在Python编程中提高脚本性能的方法,包括优化数据结构、选择合适的算法、使用Python内置函数以及通过并行和异步编程提升效率。这些技巧旨在帮助开发者在不同应用场景中编写出高性能的Python代码。
|
5天前
|
Python
【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
【5月更文挑战第6天】【Python 基础】Python中的实例方法、静态方法和类方法有什么区别?
|
5天前
|
数据处理 Python
Python中每个字段增加多条数据的高效方法
Python中每个字段增加多条数据的高效方法
10 1
|
5天前
|
存储 数据挖掘 Python
Python技术分享:实现选择文件或目录路径的方法
Python技术分享:实现选择文件或目录路径的方法
15 2
|
5天前
|
数据处理 Python
Python中按指定数量分割列表字符串的方法
Python中按指定数量分割列表字符串的方法
9 1
|
9天前
|
Python
使用Python pandas的sort_values()方法可按一个或多个列对DataFrame排序
使用Python pandas的sort_values()方法可按一个或多个列对DataFrame排序。示例代码展示了如何按'Name'和'Age'列排序 DataFrame。先按'Name'排序,再按'Age'排序。sort_values()的by参数接受列名列表,ascending参数控制排序顺序(默认升序),inplace参数决定是否直接修改原DataFrame。
23 1
|
11天前
|
机器学习/深度学习 数据可视化 前端开发
【Python机器学习专栏】机器学习模型评估的实用方法
【4月更文挑战第30天】本文介绍了机器学习模型评估的关键方法,包括评估指标(如准确率、精确率、召回率、F1分数、MSE、RMSE、MAE及ROC曲线)和交叉验证技术(如K折交叉验证、留一交叉验证、自助法)。混淆矩阵提供了一种可视化分类模型性能的方式,而Python的scikit-learn库则方便实现这些评估。选择适合的指标和验证方法能有效优化模型性能。
|
11天前
|
机器学习/深度学习 算法 Python
【Python机器学习专栏】Python中的特征选择方法
【4月更文挑战第30天】本文介绍了机器学习中特征选择的重要性,包括提高模型性能、减少计算成本和增强可解释性。特征选择方法主要包括过滤法(如相关系数、卡方检验和互信息)、包装法(如递归特征消除和顺序特征选择)和嵌入法(如L1正则化和决策树)。在Python中,可利用`sklearn`库的`feature_selection`模块实现这些方法。通过有效的特征选择,能构建更优的模型并深入理解数据。
|
11天前
|
机器学习/深度学习 数据采集 数据可视化
【Python 机器学习专栏】数据缺失值处理与插补方法
【4月更文挑战第30天】本文探讨了Python中处理数据缺失值的方法。缺失值影响数据分析和模型训练,可能导致模型偏差、准确性降低和干扰分析。检测缺失值可使用Pandas的`isnull()`和`notnull()`,或通过可视化。处理方法包括删除含缺失值的行/列及填充:固定值、均值/中位数、众数或最近邻。Scikit-learn提供了SimpleImputer和IterativeImputer类进行插补。选择方法要考虑数据特点、缺失值比例和模型需求。注意过度插补和验证评估。处理缺失值是提升数据质量和模型准确性关键步骤。