Airtest控制多個模擬器執行指令碼

2021-10-21 01:15:33 字數 2714 閱讀 4226

大致思路:

使用adb命令獲取已連線的裝置名稱,然後通過多程序分別控制多個模擬器執行指令碼。

廢話不多說,直接上**。寫的比較粗淺,有大佬們可以指教,謝謝!

# -*- coding: utf-8 -*-

# @time: 2021/2/24 19:57

# @author: lixinglong

# @file: connect_devices.py

# @software: pycharm

import re

import redis

import subprocess

import multiprocessing

from airtest.core.api import

*from airtest.cli.parser import cli_setup

# 1、首先需要搭建redis資料庫,可以搭建在自己電腦本地

# 如果是搭建在其他電腦,修改localhost為對應電腦的ip,port表示為埠

my_redis = redis.strictredis(host=

"localhost"

,port=

6379

,db=

0,decode_responses=

true

)class

connectdevices

:def

__init__

(self)

: self.pack_name =

"net.joywii.cjqy"

# 2、將所有的裝置寫入redis

definit_devices

(self)

: adb_result = subprocess.check_output(

["adb"

,"devices"])

.decode(

"utf-8"

) devices_list = adb_result.strip(

"list of devices attached"

).split(

"\n"

) my_redis.delete(

"all_devices"

)for dev in devices_list:

if re.search(

"device"

, dev)

:# 截取出裝置號(emulator-5554)

device_name = dev.split(

"\t")[

0]# 分別寫入redis

my_redis.sadd(

"all_devices"

, device_name)

print

("已新增裝置"

.format

(device_name)

)else

:continue

if my_redis.scard(

"all_devices")==

0:return self.init_devices(

)# 8、執行函式

defdo_check

(self,dev_name)

:# 9、連線裝置

# 同時連線多個裝置時,可能會出現只能連線乙個裝置的問題

# 原因的埠被占用,最簡單的就是捕獲異常,然後重新呼叫該函式

try:

ifnot cli_setup():

auto_setup(__file__, logdir=

true

, devices=

["android:"

.format

(dev_name),]

)# 11、這裡開始就可以加入自己需要執行的指令碼內容

except exception:

return self.do_check(dev_name)

# 3、開啟多程序

defconnect_pool

(self)

:# 4、獲取寫入的裝置個數

dev_num = my_redis.scard(

"all_devices"

)# 5、根據裝置數量開啟對應的程序數

print

("需要開啟的程序數"

.format

(dev_num)

) pool = multiprocessing.pool(dev_num)

# 6、使用for迴圈開啟對應數量的進行

for num in

range

(dev_num)

:# 10、從redis資料庫中隨機獲取乙個裝置名稱進行連線

dev_name = my_redis.spop(

"all_devices"

)# 7、呼叫自己需要執行的函式

# 當只要傳遞乙個引數時,需要加乙個逗號

[dev_name,])

pool.close(

) pool.join(

)if __name__ ==

'__main__'

:# 12、執行

conn = connectdevices(

) conn.init_devices(

) conn.connect_pool(

)

安卓模擬器 exagear模擬器安卓模擬器

讓android 裝置使用者重溫經典 pc 遊戲,來自俄羅斯的初創公司 eltechs發布了一款全新的 android 遊戲模擬器 exagear strategies。該遊戲模擬器的主要功能就是將經典的 pc 遊戲帶到 android 智慧型手機或平板電腦上來。1.exagear軟體和遊戲,完全免...

Android多個模擬器的通訊配置

參考文章1.2.1.參考文章1的方法,將兩台模擬器分別繫結到兩個不同的埠,假設有兩模擬器 5554,5556 將模擬器上埠6000繫結到埠 5554 5000 5556 5001 此時,對pc的埠5000訪問會 到5554的埠6000,埠5001的訪問會 到5556的埠6000 2.參考文章2的so...

如何啟動多個模擬器並連線

from selenium import webdriver from time import ctime import yaml import logging import logging.config import os import multiprocessing con log config...