• 0
  • 0
分享

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_DJ>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 : 2022-06-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 : 2022-06-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文件

        20200630111937811.png

 ②log文件的内容

202006301118400.png

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   一、软件的生命周期  软件计划与可行性研究(问题定义、可行性研究);需求分析;软件设计(概要设计、详细设计);编码;软件测试;运行与维护。  生存周期划分  各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。  生存周期基线功能基线(functional baseline)  功能基线是指在系统分析与软件定义阶段结束时,经过正式评审和批准的系统设计规格说明书中对待软件生命周期开发系统的规格说明;或是指经过项目委托单位和项目承办单位双方签字同意的协议书或合同中所规定的对待开发软件系统的规格...
            2 2 1897
            分享
          •   问题情景  服务器重新部署应用后,运行一段时间后,某一微服务开始出现错误提示:连接超时:服务忙,导致相关功能无法正常使用。  问题排查  日志查看  首先下载对应服务的日志查看报错内容,日志中出现了很多org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool 的异常信息。可以看出日志中的错误定位在HttpClient连接池,连接超时可能是连接池连接耗尽,没有可用连接导致无法正常获取连接提供服务。  初步猜想  HttpClient连接池中为了防止连接被长期占用会...
            13 13 3058
            分享
          • 增加1、要添加的数据项均合理,检查数据库中是否添加了相应的数据;2、按照边界值等价类设计测试用例的原则设计其他输入项的测试用例,有效等价类应能成功保存,无效等价类应有相应提示;3、不符合要求的地方要有错误提示;留出一个必填数据为空,是否有提示信息;唯一性数据的增加,如果添加重复数据,是否有相应提示;字符数校验,是否都超长文本做了字符数限制校验,并有相应的提示信息;日期类型是否有校验,输入错误格式或不合理的时间范围内取值,是否有相应提示信息;数字型校验,主要根据整数、正整数、负整数、小数、正小数、负小数等,根据实际需求情况进行测试校验,不符合要求应有相应提示信息;特殊格式,如手机号码、电子邮件、...
            11 11 1163
            分享
          • 一、代码覆盖率 通常我们在做单元测试的时候会接触到代码覆盖率的概念,通过在单元测试的过程中收集代码覆盖率去判断测试用例是否充分,去更精准的定位问题。而对于功能测试或者接口测试比较少的去关注覆盖率数据,功能测试时覆盖率的收集也是比较困难的。然后对于功能测试而言进行代码覆盖率的收集有利于测试工程师去判断哪些分支没有被覆盖,判断是否是设计用例的时候没有做到覆盖,又或者是由于存在bug使得无法覆盖到,从而更精准的去定位bug的位置,去分析问题,节省时间。 二、工具简介 对于java的代码覆盖率的收集,比较常用的工具有emma、jacoco,它们都是免费的代码覆盖率工具。emma目前已经不维护,Ec...
            4 3 2363
            分享
          • 什么是接口呢?接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。一、常见接口:webSe...
            0 0 1419
            分享
      • 51testing软件测试圈微信