展厅会议室中控屏.py 10.1 KB
Newer Older
1
from 预定系统.Base.app_base import *
2
from 预定系统.Base.base import *
3 4 5 6 7 8 9 10 11 12
import logging
from time import sleep

# 配置日志记录
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

class Exhibition_Meeting_Control_0001:
    """
        执行指令:
            1.cd 预定系统
13
            2.hytest --report_title 会议预约测试报告 --report_url_prefix http://nat.ubainsyun.com:31133 --tag 展厅会议室中控屏
14
    """
15
    tags = ['展厅会议室中控屏','展厅巡检','讯飞转录流程测试']
16 17 18 19 20 21 22

    def teststeps(self):
        """
        执行测试步骤以自动化测试腾讯会议应用的登录和会议加入流程。
        该方法初始化应用驱动,等待应用加载,定位并点击会议按钮,加入会议,并截取会议画面。
        """
        app_drive = None
23
        wd = GSTORE['wd']
24 25 26 27 28
        try:
            # 初始化应用驱动,连接到指定的设备和应用
            app_drive = app_setup_driver("Android", "5.1.1", "UT-12", "com.ubains.gviewer.develop",
                                         "com.ubains.gviewer.activity.SplashActivity", "192.168.5.142:5555")
            app_drive.implicitly_wait(60)  # 设置缺省等待时间
29
            INFO("等待登录页加载...")
30 31 32 33 34
            sleep(20)
            # 点击【进入系统】按钮
            enter_system_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.FrameLayout/android.widget.RelativeLayout/android.widget.Button[9]")
            enter_system_button.click()
35 36
            sleep(10)
            INFO("进入系统")
37
            # 点击【确认】按钮
38
            INFO("点击【确认】按钮")
39 40 41 42 43 44
            confirm_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.FrameLayout/android.widget.RelativeLayout[2]/android.widget.Button[1]")
            confirm_button.click()
            sleep(10)

            # 进入视频会议模式,使用摄像头跟踪功能
45
            INFO("进入视频会议模式")
46 47 48
            video_meeting_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.FrameLayout/android.widget.RelativeLayout[4]/android.widget.Button[14]")
            video_meeting_button.click()
49
            sleep(10)
50 51

            # 点击【入住式会议】按钮
52
            INFO("点击【入住式会议】按钮")
53 54 55
            enter_meeting_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.FrameLayout/android.widget.RelativeLayout[5]/android.widget.Button[2]")
            enter_meeting_button.click()
56
            sleep(10)
57 58

            # 点击【摄像头跟踪】按钮
59
            INFO("点击【摄像头跟踪】按钮")
60 61 62 63 64 65
            camera_tracking_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.FrameLayout/android.widget.RelativeLayout[5]/android.widget.Button[30]")
            camera_tracking_button.click()
            sleep(10)

            #选择左屏进行摄像头跟踪
66
            INFO("选择左屏进行摄像头跟踪")
67 68 69
            left_screen_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.FrameLayout/android.widget.RelativeLayout[6]/android.widget.Button[3]")
            left_screen_button.click()
70
            sleep(5)
71 72

            # 返回上一级界面
73
            INFO("返回上一级界面")
74 75 76
            back_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.FrameLayout/android.widget.RelativeLayout[6]/android.widget.Button[1]")
            back_button.click()
77
            sleep(5)
78 79

            # 点击无纸化
80
            INFO("点击无纸化")
81 82 83
            no_paper_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.FrameLayout/android.widget.RelativeLayout[5]/android.widget.Button[10]")
            no_paper_button.click()
84
            sleep(5)
85 86

            # 点击【全部上升】按钮
87
            INFO("点击【全部上升】按钮")
88 89 90
            all_up_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.FrameLayout/android.widget.RelativeLayout[6]/android.widget.Button[1]")
            all_up_button.click()
91 92 93 94 95 96 97 98
            sleep(5)

            # 点击【返回】按钮
            INFO("点击【返回】按钮")
            back_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.FrameLayout/android.widget.RelativeLayout[6]/android.widget.Button[6]")
            back_button.click()
            sleep(5)
99

陈泽健's avatar
陈泽健 committed
100 101 102
            # 点击左上角logo进入后台
            # 等待元素可见,并在可见后执行长按操作。
            enter_back_button = app_drive.find_element(AppiumBy.XPATH,
103
                                                       "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout[5]/android.widget.Button[1]")
104
            INFO("点击左上角logo进入后台")
陈泽健's avatar
陈泽健 committed
105
            enter_back_button.click()
106
            sleep(3)
107
            INFO("尝试定位麦克风按钮")
陈泽健's avatar
陈泽健 committed
108
            mic_on_button = app_drive.find_element(AppiumBy.XPATH,
109 110
                                                   "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout[6]/android.widget.Button[2]")
            INFO("开启麦克风")
陈泽健's avatar
陈泽健 committed
111
            mic_on_button.click()
112
            sleep(2)
113
            # 云喇叭参数
陈泽健's avatar
陈泽健 committed
114 115 116 117
            app_id = os.getenv("APP_ID", "a98a124c6c3252f6612fc544a0d0fa79")
            app_secret = os.getenv("APP_SECRET", "88bc1ec4eba624f47b2200a4ce8c3852")
            device_sn = os.getenv("DEVICE_SN", "W703BB44444")
            play_cloud_voice(app_id, app_secret, device_sn)
118 119 120 121 122 123
            sleep(20)
            # 关闭麦克风
            mic_off_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.FrameLayout/android.widget.RelativeLayout[5]/android.widget.Button[3]")
            INFO("关闭麦克风")
            mic_off_button.click()
陈泽健's avatar
陈泽健 committed
124 125 126

            # 关闭左摄像头
            left_camera_off_button = app_drive.find_element(AppiumBy.XPATH,
127
                                                            "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout[6]/android.widget.Button[5]")
128
            INFO("关闭左摄像头")
陈泽健's avatar
陈泽健 committed
129
            left_camera_off_button.click()
130
            sleep(20)
陈泽健's avatar
陈泽健 committed
131

132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
            # 进入“已预定列表”界面,结束这场会议
            safe_click((By.XPATH, "//span[contains(text(),'已预订会议')]"), wd)
            # 搜索会议
            safe_send_keys((By.XPATH, "//input[@placeholder='输入关键字搜索']"), "展厅巡检", wd)
            sleep(1)
            send_keyboard((By.XPATH, "//input[@placeholder='输入关键字搜索']"), wd)

            # 点击【更多操作】
            safe_click((By.XPATH, "//span[contains(text(),'更多操作')]"), wd)
            sleep(3)
            # 点击【会议状态】按钮
            safe_click((By.XPATH, "//li[contains(text(),'会议状态')]"), wd)
            sleep(3)
            # 点击【结束会议】按钮,并点击【确定】按钮结束这场会议
            safe_click((By.XPATH, "//span[contains(text(),'提前结束')]"), wd)
            sleep(2)
            safe_click((By.XPATH, "//div[@slot='footer']//span[contains(text(),'确定')]"), wd)

150

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