from 运维集控.项目测试.运维标准版.lib.base import *

#构建当前项目路径
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..', '..', '..')))
# 构建 CSV 文件的绝对路径
csv_path = os.path.abspath(
    os.path.join(os.path.dirname(__file__), '..', '..', 'testdata', '01登录模块', '登录信息.csv'))

class User_Login:
    tags = ['用户登录','管理员登录']
    #构建框架的数据集格式
    ddt_cases = read_csv_data(csv_path)

    def teststeps(self):
        # 获取 WebDriver 实例
        wd = GSTORE['wd']

        #从self.para中解构出数据
        name = self.name
        username, password, captcha, info= self.para

        # 记录当前测试步骤：用户登录
        STEP(1, f'{username} 用户登录测试')
        # 使用从 CSV 读取的数据进行登录
        user_login(username, password, captcha)

        #记录当前测试步骤：输出提示内容
        STEP(2, f'预期提示内容为：{info}')

        # 记录当前测试步骤：验证是否登录成功
        STEP(3, '获取登录提示内容')
        # 等待系统首页的特定元素（如图片）可见
        get_menu = WebDriverWait(wd, 5).until(
            EC.visibility_of_element_located((By.XPATH, "//p[@class='el-message__content']"))
        )
        get_text = get_menu.text

        # 检查点：验证是否跟预定结果一致
        CHECK_POINT('校验提示内容是否跟预定结果一致', get_text == info)
        # 截图并保存
        SELENIUM_LOG_SCREEN(wd, "50%")
