from 预定系统.Base.app_base import * import logging from time import sleep from hytest import * # 配置日志记录 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') class Exhibition_hall_Control_000x: """ 执行指令: 1.cd 预定系统 2.hytest --report_title 会议预约测试报告 --report_url_prefix http://192.168.1.225 --tag 展厅中控屏 """ tags = ['展厅中控屏','展厅巡检'] def teststeps(self): """ 执行测试步骤以自动化测试腾讯会议应用的登录和会议加入流程。 该方法初始化应用驱动,等待应用加载,定位并点击会议按钮,加入会议,并截取会议画面。 """ app_drive = None wd = GSTORE['wd'] try: # 初始化应用驱动,连接到指定的设备和应用 app_drive = app_setup_driver("Android", "5.1.1", "UT-13", "com.ubains.gviewer", ".SplashActivity", "192.168.5.112:5555") app_drive.implicitly_wait(60) # 设置缺省等待时间 # 使用显式等待来等待元素出现 logging.info("等待首页加载...") # 先切换界面,再切回灯光控制 air_button = app_drive.find_element(AppiumBy.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[1]/android.widget.Button[6]") logging.info("尝试定位【空气净化】按钮元素,并点击按钮") air_button.click() sleep(10) STEP(2, "检查灯光控制功能") # 这是灯光开启前的截图 INFO("请检查灯光开启前的监控视频状态是否正常") SELENIUM_LOG_SCREEN(wd, "75%", "Exhibit_Inspect", "Control_Manage", "light_down") # 先截取当前空间的灯光状态图片 light_rtsp_url = "rtsp://admin:huawei@123@192.168.4.15/LiveMedia/ch1/Media2" # 替换为你的RTSP流地址 logging.info("开始捕获RTSP流中的帧") if capture_frame_from_rtsp(light_rtsp_url, "light_down.png"): logging.info("帧捕获成功") else: logging.error("帧捕获失败") # 定位灯光控制按钮元素,并点击按钮 logging.info("尝试定位【灯光控制】按钮元素,并点击按钮") light_button = app_drive.find_element(AppiumBy.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.Button[3]") logging.info("定位成功") # 点击【灯光控制】按钮 light_button.click() logging.info("点击【灯光控制】按钮成功") sleep(10) # 这是全部灯光关闭后在软件界面上的状态显示 INFO("请检查中控屏软件的灯光关闭状态显示是否正常") SELENIUM_LOG_SCREEN(wd, "75%", "Exhibit_Inspect", "Control_Manage", "light_all_off") # 截图获取当前软件的灯光控制界面 app_drive.get_screenshot_as_file( r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\imgs\Exhibit_Inspect\Control_Manage\light_all_off.png") # 调用灯光控制函数 light_control(app_drive) # 这是全部灯光开启后在软件界面上的状态显示 INFO("请检查中控屏软件的灯光开启状态显示是否正常") SELENIUM_LOG_SCREEN(wd, "75%", "Exhibit_Inspect", "Control_Manage", "light_all_on") # 截图获取当前软件的灯光控制界面 app_drive.get_screenshot_as_file( r"D:\GithubData\自动化\ubains-module-test\预定系统\reports\imgs\Exhibit_Inspect\Control_Manage\light_all_on.png") # 这是灯光开启后的截图 INFO("请检查灯光开启后的监控视频状态是否正常") SELENIUM_LOG_SCREEN(wd, "75%", "Exhibit_Inspect", "Control_Manage", "light_on") # 先截取当前空间的灯光状态图片 light_rtsp_url = "rtsp://admin:huawei@123@192.168.4.15/LiveMedia/ch1/Media2" # 替换为你的RTSP流地址 logging.info("开始捕获RTSP流中的帧") if capture_frame_from_rtsp(light_rtsp_url, "light_on.png"): logging.info("帧捕获成功") else: logging.error("帧捕获失败") STEP(3, "检查窗帘的升降功能") # 切换至窗帘控制界面 logging.info("尝试定位【窗帘控制】按钮元素,并点击按钮") curtain_button = app_drive.find_element(AppiumBy.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[1]/android.widget.Button[4]") curtain_button.click() sleep(2) # 调用窗口上升下降的函数 curtain_control(app_drive,wd) STEP(3, "检查空调控制是否正常") # 切换至空调控制界面 logging.info("尝试定位【空调控制】按钮元素,并点击按钮") air_conditioner_button = app_drive.find_element(AppiumBy.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[1]/android.widget.Button[5]") air_conditioner_button.click() sleep(2) # 调用空调控制的函数 air_condition_control(app_drive,wd) STEP(4, "检查指挥大屏控制是否正常") # 切换至指挥中心控制界面 # 打开指挥中心大屏幕 logging.info("尝试定位【开启指挥中心控制】按钮元素,并点击按钮") center_button = app_drive.find_element(AppiumBy.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[1]/android.widget.Button[8]") center_button.click() sleep(2) # 调用指挥中心控制函数 command_centre_control(light_rtsp_url, app_drive,wd) STEP(5, "检查音乐控制功能是否正常") # 切换至音乐区域 logging.info("尝试定位【音乐】按钮元素,并点击按钮") music_button = app_drive.find_element(AppiumBy.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[1]/android.widget.Button[9]") music_button.click() sleep(2) # 调用音乐控制函数 music_control(app_drive,wd) STEP(6, "检查信息发布界面发布内容功能是否正常") logging.info("尝试定位【发布屏】按钮元素,并点击按钮") information_delivery = app_drive.find_element(AppiumBy.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[1]/android.widget.Button[7]") logging.info("定位成功") information_delivery.click() sleep(5) # 打开信息发布播放 information_on_button = app_drive.find_element(AppiumBy.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.widget.Button[7]") information_on_button.click() logging.info("信息发布播放开启成功") # 调用信息发布控制函数 information_control(app_drive,wd) # STEP(7, "关闭展厅环境灯光。") # # 切换灯光控制界面 # # 所有测试结束后关闭灯光 # logging.info("尝试定位【灯光控制】按钮元素,并点击按钮") # light_button = app_drive.find_element(AppiumBy.XPATH, # "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.Button[3]") # logging.info("定位成功") # # 点击【灯光控制】按钮 # light_button.click() # sleep(10) # light_control(app_drive) except Exception as e: # 捕获并记录任何发生的错误 logging.error(f"发生错误: {e}", exc_info=True) # finally: # 确保驱动程序在测试结束后正确关闭 # if app_drive: # app_drive.quit() # logging.info("驱动程序已退出。")