from appium.webdriver.common.appiumby import AppiumBy
from 预定系统.Base.app_base import *
import logging
from time import sleep

# 配置日志记录
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
        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(20)

            # 定位灯光控制按钮元素，并点击按钮
            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(20)

            # 开启所有区域灯光
            # 定位【接待区】灯光
            light_reception_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.ImageView[1]")
            sleep(2)
            logging.info("尝试定位【接待区】按钮元素，并点击按钮")
            light_reception_button.click()
            sleep(2)

            # 定位【指挥中心】灯光
            light_command_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[2]/android.widget.Button[3]")
            sleep(2)
            logging.info("尝试定位【指挥中心】按钮元素，并点击按钮")
            light_command_center_button.click()
            sleep(2)

            # 定位【影音室】灯光
            light_audio_room_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[2]")
            sleep(2)
            logging.info("尝试定位【影音室】按钮元素，并点击按钮")
            light_audio_room_button.click()
            sleep(2)

            # 定位【会议室】灯光
            light_meeting_room_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[5]")
            sleep(2)
            logging.info("尝试定位【会议室】按钮元素，并点击按钮")
            light_meeting_room_button.click()
            sleep(2)

            # 定位【会商区】灯光
            light_meeting_area_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[4]")
            sleep(2)
            logging.info("尝试定位【会商区】按钮元素，并点击按钮")
            light_meeting_area_button.click()
            sleep(2)

            # 定位【培训室】灯光
            light_training_room_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[6]")
            sleep(2)
            logging.info("尝试定位【培训室】按钮元素，并点击按钮")
            light_training_room_button.click()
            sleep(2)

            # 切换至窗帘控制界面
            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)
            # 所有窗帘全部上升
            logging.info("尝试定位【窗帘上升】按钮元素，并点击按钮")
            for i in range(1, 6):
                logging.info(f"尝试定位第{i}个【窗帘上升】按钮元素，并点击按钮")
                curtain_up_button = app_drive.find_element(AppiumBy.XPATH,
                                                          f"/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[{i}]")
                curtain_up_button.click()
                sleep(2)


        except Exception as e:
            # 捕获并记录任何发生的错误
            logging.error(f"发生错误: {e}", exc_info=True)

        finally:
            # 确保驱动程序在测试结束后正确关闭
            if app_drive:
                app_drive.quit()
                logging.info("驱动程序已退出。")