安装无界面版本的Appium

1.为什么想到安装无界面版本的的Appium?

起因1:每次都要点开Appium客户端,设置端口,麻烦的,写了几行代码,懒劲上来了,老想搞点自动化。
在这里插入图片描述
起因2:博主之前做过一份工作,需要控制多个设备。公司给到的笔记本配置一般(16G的ThinkPad T490)。 开启5个Appium客户端之后,笔记本已经快不行了,内存吃不住。我自己也快不行了,开启几个客户端,一个一个客户端,设置不同的端口,七七八八搞下来。真是对不起自动化,对不起学到的这几行代码了。于是搜罗了一下,无界面的Appium。

2.安装无界面版本的Appium

原来一直都是有的,只是我自己懒,没有去查,而且,安装还这么简单。吃了懒和没经验的亏啊。
准备:首先需要在电脑上安装node. 下载链接看这:Node.js中文网
下载安装好后,将Node的安装目录,添加到环境变量中。
此时,在命令行内,就可以通过node --version 检查是否安装完成了。

C:\Users\xxx>node --version
v16.14.2  # 我本机安装的版本

在这里插入图片描述

因为安装的node默认下载源是国外的,我们先将下载源设置到国内的源,之前用的淘宝的源,下载正常。设置方法:

npm config set registry https://registry.npm.taobao.org  # 先设置下载源为淘宝。没有返回值
npm config get registry  # 查看下载源,返回设置的结果。
npm install -g appium  # 开始安装。等待安装完成,即可使用。

3.检查安装结果

命令行直接输入appium,即可启动一个appium服务。默认的端口是4723
在这里插入图片描述
多设备时,需要指定端口,通过-p参数 加上端口值即可:
在这里插入图片描述

4.引出新问题

问题:我安装了无界面的Appium,到头来,还不是要打开命令行一个一个的去设置端口?
**而且:**一个命令行窗口,只能开一个端口,就没法继续输入了。十个设备,我不是要开十个黑乎乎的窗口?
在这里插入图片描述
作为自动化测试工程师,当然不局限于此。既然学了几行代码,自然不能就这么完了。
在这里插入图片描述
既然可以通过命令行启动了,为何不通过Python脚本来实现?
既然要启动多个窗口,下意识是什么? --当然是多线程啊。
还能不能智能一点? 智能根据设备的连接数量,自己启动多个端口,自增的增长端口号?
在这里插入图片描述

5.智能化的启动Appium服务。

这个弹起来,就有的说了,额,要从盘古开…咳咳,从获取当前电脑连接的设备数量开始说起。
我们都知道,可以通过adb devices 获取当前电脑连接的设备数量。
那就—写个脚本,函数来获取这个数量。

import os
def get_devices():
    # 获取所有连接设备的列表
    all_devices = []
    cmd = 'adb devices'
    result = os.popen(cmd).readlines()[1:]  # 首行标题,去掉。
    for item in result:
        if item != "\n":  # 换行符也要去除
            all_devices.append(str(item).split("\t")[0])  # 返回值的切割处理,可以自行打印看看,就只到要怎么处理了。
    # print(get_time(),f"当前连接的设备有:{len(all_devices)}")
    return all_devices  # 为什么不是直接返回数量? 因为自动化后面还需要用到设备的IP信息,区分设备。做个加工求一下总数就是,不麻烦。

引入多线程,智能启动appium

import os
import time
from multiprocessing.dummy import Pool
from base.common import get_devices

num = len(get_devices())  # 获取设备数量。
if num:
    print(f"共有{num}个设备。")
    ls = [4725 + i * 5 for i in range(num)]  # 端口号,两个服务之间,至少间隔2以上,为什么,自行查询。设个5,没什么影响。反正用不完。
else:  # 是0会报错。
    print("还没有连接任何设备,请先检查一下。")
    exit(100)

def start_appium(port):
    os.system(f"appium -p {port}")  # 通过脚本去启动无界面的Appim服务。端口是变量
    time.sleep(1)  # 避免打印重叠而已。

p = Pool(num)  # 线程池,根据设备数量去启动多个线程。 设备数量较大的话,我也没试过。这里起个2-30个完全无压力。
# 针对端口号列表ls,每个都执行一下开启操作。
p.map(start_appium, ls)  # 开完就阻塞了,不会往下走。不过这边的任务也只是开启.后面就不需要管了.

Appium都设置好了,就开始自动化脚本吧。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值