提交 00338b68 authored 作者: 陈泽健's avatar 陈泽健

将手动执行adb连接的操作合并到程序中,并在每个adb连接设备模块执行完后断开对应设备的adb连接。处理可能因网络连接自动断开adb后无法进行远程app自动化操作的问题。

上级 c7caa94d
...@@ -579,3 +579,39 @@ def volume_acquisition(): ...@@ -579,3 +579,39 @@ def volume_acquisition():
# if __name__ == "__main__": # if __name__ == "__main__":
# volume_acquisition() # volume_acquisition()
import subprocess
from venv import logger
def adb_connect_device(device_ip, port=5555):
"""
通过 ADB 连接设备并检查设备状态
:param device_ip: 设备的 IP 地址
:param port: 端口号,默认为 5555
"""
try:
# 构建设备地址
device_address = f"{device_ip}:{port}"
# 连接设备
subprocess.run(['adb', 'connect', device_address], check=True)
INFO(f"尝试连接到设备: {device_address}")
# 检查设备状态
result = subprocess.run(['adb', 'devices'], capture_output=True, text=True, check=True)
devices = result.stdout.strip().split('\n')[1:] # 去掉标题行
for device in devices:
ip, status = device.split()
if ip == device_address and status == 'device':
INFO(f"设备 {device_address} 已连接并可用")
return True
elif ip == device_address and status == 'offline':
logger.error(f"设备 {device_address} 处于 offline 状态")
return False
elif ip == device_address and status == 'unauthorized':
logger.error(f"设备 {device_address} 未授权调试")
return False
logger.error(f"设备 {device_address} 未找到")
return False
except subprocess.CalledProcessError as e:
logger.error(f"连接设备失败: {e}")
return False
\ No newline at end of file
...@@ -160,3 +160,5 @@ ...@@ -160,3 +160,5 @@
- 补充展厅中控屏巡检流程的rtsp视频流截取监控画面,优化主题函数的代码,将每个设备控制封装为函数调用,增加可维护性。 - 补充展厅中控屏巡检流程的rtsp视频流截取监控画面,优化主题函数的代码,将每个设备控制封装为函数调用,增加可维护性。
35. 2025-01-07 35. 2025-01-07
- 增加窗帘下降后的等待时间再进行监控rtsp流截屏。 - 增加窗帘下降后的等待时间再进行监控rtsp流截屏。
36. 2025-01-09
- 将手动执行adb连接的操作合并到程序中,并在每个adb连接设备模块执行完后断开对应设备的adb连接。处理可能因网络连接自动断开adb后无法进行远程app自动化操作的问题。
\ No newline at end of file
import sys import sys
import os import os
from time import sleep from venv import logger
# 获取当前脚本的绝对路径 # 获取当前脚本的绝对路径
current_dir = os.path.dirname(os.path.abspath(__file__)) current_dir = os.path.dirname(os.path.abspath(__file__))
...@@ -11,10 +11,12 @@ sys.path.append(预定系统_path) ...@@ -11,10 +11,12 @@ sys.path.append(预定系统_path)
# 导入模块 # 导入模块
try: try:
from 预定系统.Base.base import * from 预定系统.Base.base import *
from 预定系统.Base.app_base import *
except ModuleNotFoundError as e: except ModuleNotFoundError as e:
print(f"ModuleNotFoundError: {e}") print(f"ModuleNotFoundError: {e}")
print("尝试使用绝对路径导入") print("尝试使用绝对路径导入")
from 预定系统.Base.base import * from 预定系统.Base.base import *
from 预定系统.Base.app_base import *
def suite_setup(): def suite_setup():
STEP(1, "初始化浏览器") STEP(1, "初始化浏览器")
...@@ -25,61 +27,24 @@ def suite_setup(): ...@@ -25,61 +27,24 @@ def suite_setup():
wd = GSTORE['wd'] wd = GSTORE['wd']
admin_login("Test02", "ubains@123") admin_login("Test02", "ubains@123")
sleep(5) sleep(5)
# 通过 ADB 连接设备
device_ip = '192.168.5.112' # 替换为你的设备 IP 地址
if not adb_connect_device(device_ip):
INFO("设备连接失败或状态不正确,无法继续执行测试")
sys.exit(1)
# 其他检查步骤...
# STEP(2, "检查灯光开启状态") # STEP(2, "检查灯光开启状态")
# # 这是全部灯光关闭后在软件界面上的状态显示
# INFO("请检查中控屏软件的灯光关闭状态显示是否正常") # INFO("请检查中控屏软件的灯光关闭状态显示是否正常")
# SELENIUM_LOG_SCREEN(wd,"50%","Exhibit_Inspect","Control_Manage","light_all_off") # SELENIUM_LOG_SCREEN(wd,"50%","Exhibit_Inspect","Control_Manage","light_all_off")
# # 这是全部灯光开启后在软件界面上的状态显示 # ...
# INFO("请检查中控屏软件的灯光开启状态显示是否正常")
# SELENIUM_LOG_SCREEN(wd,"50%","Exhibit_Inspect","Control_Manage","light_all_on")
# # 这是灯光开启前的截图
# INFO("请检查灯光开启前的监控视频状态是否正常")
# SELENIUM_LOG_SCREEN(wd,"50%","Exhibit_Inspect","Control_Manage","light_down")
# # 这是灯光开启后的截图
# INFO("请检查灯光开启后的监控视频状态是否正常")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "light_on")
# STEP(3, "检查窗帘的上升下降状态")
# INFO("请检查窗帘上升状态是否正常")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "curtain_up")
# INFO("请检查窗帘下降状态是否正常")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "curtain_down")
# STEP(3, "检查空调开启状态")
# # 这是空调关闭的状态显示
# INFO("请检查空调关闭的状态是否正常")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "air_condition_off")
# # 这是空调开启的状态显示
# INFO("请检查空调开启的状态是否正常")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "air_condition_on")
# STEP(4, "检查指挥大屏开启状态")
# # 这是指挥大屏关闭的监控视频显示
# INFO("请检查指挥大屏关闭的监控视频状态是否正常")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "command_screen_down")
# # 这是指挥大屏开启的监控视频显示
# INFO("请检查指挥大屏开启的监控视频状态是否正常")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "command_screen_on")
# STEP(5,"检查音乐播放状态")
# # 这是音乐开启播放后的界面显示
# INFO("请检查中控屏软件打开音乐播放后的界面状态显示")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "music_on")
# # 这是音乐关闭播放后的界面显示
# INFO("请检查中控屏软件关闭音乐播放后的界面状态显示")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "music_off")
# STEP(6,"检查信息发布界面展示")
# # 这是生日快乐主题内容发布
# INFO("请检查中控屏软件信息发布界面是否正常")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "information_brithday_on")
# # 这是会议欢迎主题内容发布
# INFO("请检查中控屏软件信息发布界面是否正常")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "information_meeting_on")
# # 这是展厅空间结构内容发布
# INFO("请检查中控屏软件信息发布界面是否正常")
# SELENIUM_LOG_SCREEN(wd, "50%", "Exhibit_Inspect", "Control_Manage", "information_space_on")
def suite_teardown(): def suite_teardown():
browser_quit() browser_quit()
# 断开特定 IP 和端口的 ADB 连接
device_ip = '192.168.5.112' # 替换为你的设备 IP 地址
port = 5555 # 默认端口
device_address = f"{device_ip}:{port}"
subprocess.run(['adb', 'disconnect', device_address])
INFO(f"ADB 连接已断开: {device_address}")
\ No newline at end of file
...@@ -11,10 +11,12 @@ sys.path.append(预定系统_path) ...@@ -11,10 +11,12 @@ sys.path.append(预定系统_path)
# 导入模块 # 导入模块
try: try:
from 预定系统.Base.base import * from 预定系统.Base.base import *
from 预定系统.Base.app_base import *
except ModuleNotFoundError as e: except ModuleNotFoundError as e:
print(f"ModuleNotFoundError: {e}") print(f"ModuleNotFoundError: {e}")
print("尝试使用绝对路径导入") print("尝试使用绝对路径导入")
from 预定系统.Base.base import * from 预定系统.Base.base import *
from 预定系统.Base.app_base import *
def suite_setup(): def suite_setup():
STEP(1, "初始化浏览器") STEP(1, "初始化浏览器")
...@@ -26,5 +28,17 @@ def suite_setup(): ...@@ -26,5 +28,17 @@ def suite_setup():
admin_login("Test02", "ubains@123") admin_login("Test02", "ubains@123")
sleep(5) sleep(5)
# 通过 ADB 连接设备
device_ip = '192.168.5.157' # 替换为你的设备 IP 地址
if not adb_connect_device(device_ip):
logger.error("设备连接失败或状态不正确,无法继续执行测试")
sys.exit(1)
def suite_teardown(): def suite_teardown():
browser_quit() browser_quit()
# 断开特定 IP 和端口的 ADB 连接
device_ip = '192.168.5.157' # 替换为你的设备 IP 地址
port = 5555 # 默认端口
device_address = f"{device_ip}:{port}"
subprocess.run(['adb', 'disconnect', device_address])
logger.info(f"ADB 连接已断开: {device_address}")
\ No newline at end of file
...@@ -11,10 +11,12 @@ sys.path.append(预定系统_path) ...@@ -11,10 +11,12 @@ sys.path.append(预定系统_path)
# 导入模块 # 导入模块
try: try:
from 预定系统.Base.base import * from 预定系统.Base.base import *
from 预定系统.Base.app_base import *
except ModuleNotFoundError as e: except ModuleNotFoundError as e:
print(f"ModuleNotFoundError: {e}") print(f"ModuleNotFoundError: {e}")
print("尝试使用绝对路径导入") print("尝试使用绝对路径导入")
from 预定系统.Base.base import * from 预定系统.Base.base import *
from 预定系统.Base.app_base import *
def suite_setup(): def suite_setup():
STEP(1, "初始化浏览器") STEP(1, "初始化浏览器")
...@@ -26,5 +28,17 @@ def suite_setup(): ...@@ -26,5 +28,17 @@ def suite_setup():
admin_login("Test02", "ubains@123") admin_login("Test02", "ubains@123")
sleep(5) sleep(5)
# 通过 ADB 连接设备
device_ip = '192.168.5.142' # 替换为你的设备 IP 地址
if not adb_connect_device(device_ip):
logger.error("设备连接失败或状态不正确,无法继续执行测试")
sys.exit(1)
def suite_teardown(): def suite_teardown():
browser_quit() browser_quit()
# 断开特定 IP 和端口的 ADB 连接
device_ip = '192.168.5.142' # 替换为你的设备 IP 地址
port = 5555 # 默认端口
device_address = f"{device_ip}:{port}"
subprocess.run(['adb', 'disconnect', device_address])
logger.info(f"ADB 连接已断开: {device_address}")
\ No newline at end of file
...@@ -4,4 +4,4 @@ tunnels: ...@@ -4,4 +4,4 @@ tunnels:
nat1: nat1:
remote_port: 31133 remote_port: 31133
proto: proto:
tcp: "192.168.1.225:80" tcp: "192.168.1.114:80"
\ No newline at end of file \ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论