一、测试目标及测试任务概括

        验证问卷考试系统各个模块功能完整性,以及确保用户注册功能、登录功能、首页、我的项目、我的练习、题库中心、模版广场和系统管理等核心功能模块符合要求

二、测试文档

类别 配置/版本
硬件 Dell G15 5530
手动测试浏览器 Microsoft Edge版本 148.0.3967.83
开发工具 Pycharm 2025.3.1
自动化测试工具 Selenium 4.0.0
操作系统 Windows 11 家庭中文版
自动化测试浏览器 Microsoft Edge版本 148.0.3967.83

三、测试用例

3.1 注册界面测试用例

3.2 登录界面测试用例

3.3 首页界面测试用例

3.4 我的项目界面测试用例

3.5 我的练习界面测试用例

3.6 我的题库界面测试用例

3.7 模版广场页面测试用例

3.8 个人设置页面测试用例

3.9 兼容性、易用性、界面测试用例

四、手动功能测试系统

4.1注册页面

4.1.1 输入姓名、登录灼、密码、确认密码

预期结果:注册成功

4.1.2 姓名为空

预期结果:提示请输入您的昵称

4.1.3 登录账号为空

预期结果:提示登录账号不能为空

4.1.4 密码为空

预期结果:提示密码是必填项

4.1.5 确认密码为空

预期结果:提示请再次输入密码

4.2 登录页面

4.2.1 输入正确的账号名和密码

预期结果:成功登录

4.2.2 用户名为空

预期结果:用户名是必填项

4.2.3 密码为空

预期结果:密码是必填项

4.2.4 用户名错误

预期结果:登录失败,提示错误的用户名和密码

4.2.5 密码错误

预期结果:登录失败,提示错误的用户名和密码

4.2.6 错误的用户名和密码

预期结果:登录失败,提示错误的用户名和密码

4.3 首页页面

4.3.1 创建问卷,点击保存

预期结果:创建成功

4.3.2 创建考试,点击保存

预期结果:创建成功

4.4 我的项目

点击列表按钮

点击新建

4.5 我的练习

点击二维码

点击删除

查询练习

点击其他文件夹

点击开始练习

4.6 我的题库

测试搜索框和查询按钮

点击文本导入

点击模版导入

点击试题管理

点击新建

输入题库名、选择题库类型

创建成功

题目名称为空 预期结果:提示题目名称不能为空

题库类型为空 预期结果:提示请选择题库类型

4.7 模版广场

点击私有库

点击新建

4.7 个人设置

点击提交,设置成功

姓名为空 预期结果:提示请输入您的昵称

手机号为空 预期结果:提示请输入您的联系电话

邮箱为空 预期结果:提示请输入您的邮箱

个人简介为空 预期结果:提示请输入个人简介

五、兼容性测试

在Mircosoft Edge浏览器打开

预期结果:正常打开,可以使用完整功能

在Google Chrome浏览器打开

预期结果:正常打开,可以使用完整功能

在vivo移动端打开

预期结果:正常打开,可以使用完整功能

六、自动化测试代码

utils.py

import datetime
import os
import sys
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.edge.service import Service

class QuestDriver:
    driver=None
    @classmethod
    def Init_driver(cls):
        if cls.driver is None:
            # EdgeDriver 路径
            edge_driver_path = r"D:\cxdownload\edgedriver_win64\msedgedriver.exe"
            # 创建Service对象
            service = Service(edge_driver_path)
            # 创建EdgeOptions 并添加参数
            options = Options()
            options.add_argument("--remote-allow-origins=*")
            # 创建 WebDriver 对象
            cls.driver = webdriver.Edge(service=service, options=options)
    @classmethod
    def getScreeShot(cls):
        #创建屏幕截图
        dirname=datetime.datetime.now().strftime("%Y-%m-%d")
        if not os.path.exists("../images/"+dirname):
            os.mkdir("../images/"+dirname)
        filename=sys._getframe().f_back.f_code.co_name+"-"+datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")+".png"
        cls.driver.save_screenshot("../images/"+dirname+"/"+filename)

注册代码

from common.utils import QuestDriver
from selenium.webdriver.common.by import By
import time
#注册页面测试用例
class QuestEnroll:
    url=""
    driver = ""
    def __init__(self):
        self.url="http://49.235.61.184:8080/user/register"
        QuestDriver.Init_driver()
        self.driver=QuestDriver.driver
        self.driver.get(self.url)

    # 检查页面输入框的提示信息是否正确
    def EnrollSucCheck(self):
        actual = self.driver.find_element(By.CSS_SELECTOR,
                                          "#root > div > div.content___1k5Ro > div.main___19HXK > div > form > div:nth-child(2) > div > div.ant-col.ant-form-item-label > label").text
        assert actual == "姓名"
        actual = self.driver.find_element(By.CSS_SELECTOR,
                                          "#root > div > div.content___1k5Ro > div.main___19HXK > div > form > div:nth-child(3) > div > div.ant-col.ant-form-item-label > label").text
        assert actual == "登录账号"
        actual = self.driver.find_element(By.CSS_SELECTOR,
                                          "#root > div > div.content___1k5Ro > div.main___19HXK > div > form > div:nth-child(4) > div > div.ant-col.ant-form-item-label > label").text
        assert actual == "密码"
        actual = self.driver.find_element(By.CSS_SELECTOR,
                                          "#root > div > div.content___1k5Ro > div.main___19HXK > div > form > div:nth-child(5) > div > div.ant-col.ant-form-item-label > label").text
        assert actual == "密码确认"

    # 成功注册
    def EnrollSucTest(self):
        self.driver.find_element(By.CSS_SELECTOR,"#name").send_keys("小晞")
        self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR,"#rePassword").send_keys("789lxx")
        self.EnrollSucText()
        #点击“注册账号”
        self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___1k5Ro > div.main___19HXK > div > form > button").click()
        #点击之后会直接跳转到登录页面,测试”返回登录“目前只需要测试”返回登录“是否在该页面存在
        #返回登录
        actual=self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___1k5Ro > div.main___19HXK > div > form > div:nth-child(6) > a").text
        assert actual=="返回登录"
        #屏幕截图
        QuestDriver.getScreeShot()
        ########################注册失败###############################

    # 姓名为空
    def EnrollFailTest1(self):
        self.driver.find_element(By.CSS_SELECTOR,"#name")
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR, "#rePassword").send_keys("789lxx")
        self.EnrollSucText()
        # 点击“注册账号”
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___1k5Ro > div.main___19HXK > div > form > button").click()
        #提示姓名是必填项!
        actual = self.driver.find_element(By.CSS_SELECTOR,"#name_help > div").text
        assert actual=="用户名是必填项!"
        # 屏幕截图
        QuestDriver.getScreeShot()

    # 登录账号为空
    def EnrollFailTest2(self):
        self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys("小晞")
        self.driver.find_element(By.CSS_SELECTOR, "#username")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR, "#rePassword").send_keys("789lxx")
        self.EnrollSucText()
        # 点击“注册账号”
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___1k5Ro > div.main___19HXK > div > form > button").click()
        #提示登录账号不能为空
        actual=self.driver.find_element(By.CSS_SELECTOR,"#username_help > div").text
        assert actual=="登录账号不能为空"
        #屏幕截图
        QuestDriver.getScreeShot()
        #验证其余输入项为空,是否有提示 方法和上面的验证方法一样

    # 两次密码输的不一样
    def EnrollFailTest3(self):
        self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys("小晞")
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR, "#rePassword").send_keys("788lxx")
        self.EnrollSucText()
        # 点击“注册账号”
        self.driver.find_element(By.CSS_SELECTOR,
                     "#root > div > div.content___1k5Ro > div.main___19HXK > div > form > button").click()
        actual=self.driver.find_element(By.CSS_SELECTOR,"#rePassword_help > div").text
        assert actual=="两次密码不一致!"
        #屏幕截图
        QuestDriver.getScreeShot()

    # 密码输入五位,其余正常输入
    def EnrollFailTest4(self):
        self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys("小晞")
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lx")
        self.driver.find_element(By.CSS_SELECTOR, "#rePassword").send_keys("789lx")
        self.EnrollSucText()
        # 点击“注册账号”
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___1k5Ro > div.main___19HXK > div > form > button").click()
        actual=self.driver.find_element(By.CSS_SELECTOR,"#password_help > div").text
        assert actual=="密码至少6位"
        QuestDriver.getScreeShot()

    # 已经登录账号重复注册
    def EnrollFailTest5(self):
        self.driver.find_element(By.CSS_SELECTOR, "#name").send_keys("小")
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR, "#rePassword").send_keys("789lxx")
        self.EnrollSucText()
        # 点击“注册账号”
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___1k5Ro > div.main___19HXK > div > form > button").click()
        time.sleep(2)
        actual=self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___1k5Ro > div.main___19HXK > div > form > div.ant-alert.ant-alert-error > div > div").text
        assert actual=="账号已存在"
        QuestDriver.getScreeShot()

登录代码

import time
from selenium.webdriver.common.by import By
from common.utils import QuestDriver

class QuestLogin:
    driver=""
    url=""
    def __init__(self):
        QuestDriver.Init_driver()
        self.driver=QuestDriver.driver
        self.url="http://49.235.61.184:8080/user/login"
        self.driver.get(self.url)
    #注册成功
    def LoginSucTest(self):
        self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("明明")
        #定位眼睛图标
        eye_elem=self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___2zk1- > div.main___x4OjT > div > form > div:nth-child(3) > div > div > div > div > span > span.ant-input-suffix")
        #打开密码密文(睁眼)
        eye_elem.click()
        #再点击一次,隐藏密码密文(闭眼)
        eye_elem.click()
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR,"#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        QuestDriver.getScreeShot()

    # 账号名为空(打开眼睛)
    def LoginFailTest1(self):
        self.driver.find_element(By.CSS_SELECTOR,"#username")
        # 定位眼睛图标
        eye_elem = self.driver.find_element(By.CSS_SELECTOR,
                                            "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > div:nth-child(3) > div > div > div > div > span > span.ant-input-suffix")
        # 打开密码密文(睁眼)
        eye_elem.click()
        self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        #提醒用户名是必填项!
        actual=self.driver.find_element(By.CSS_SELECTOR,"#username_help > div").text
        assert actual=="用户名是必填项!"
        QuestDriver.getScreeShot()

    # 密码为空
    def LoginFailTest2(self):
        self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        #提醒密码是必填项!
        actual=self.driver.find_element(By.CSS_SELECTOR,"#password_help > div").text
        assert actual=="密码是必填项!"
        QuestDriver.getScreeShot()

    # 错误的用户名
    def LoginFailTest3(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("mingming")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        # 提醒错误的用户名和密码
        time.sleep(2)
        actual = self.driver.find_element(By.CSS_SELECTOR, "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > div.ant-alert.ant-alert-error > div > div").text
        assert actual == "错误的用户名和密码"
        QuestDriver.getScreeShot()

    # 错误的密码
    def LoginFailTest4(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxq")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        # 提醒错误的用户名和密码
        time.sleep(2)
        actual = self.driver.find_element(By.CSS_SELECTOR,
                                          "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > div.ant-alert.ant-alert-error > div > div").text
        assert actual == "错误的用户名和密码"
        QuestDriver.getScreeShot()

    # 错误的用户名和密码
    def LoginFailTest5(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("ming")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxq")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        # 提醒错误的用户名和密码
        time.sleep(2)
        actual = self.driver.find_element(By.CSS_SELECTOR,
                                          "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > div.ant-alert.ant-alert-error > div > div").text
        assert actual == "错误的用户名和密码"
        QuestDriver.getScreeShot()

首页代码

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.support.wait import WebDriverWait
from common.utils import QuestDriver
import time
from selenium.webdriver.common.by import By
class QuestHome:
    driver=""
    url=""
    def __init__(self):
        QuestDriver.Init_driver()
        self.driver=QuestDriver.driver

    def QuestSucTest(self):
        #创建问卷
        wait = WebDriverWait(self.driver, 10)
        # 点击“创建问卷”
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[2]/div/div[2]/div/a[1]'))).click()
        #创建问卷内容
        #点击“单选题”按钮
        single_choose=wait.until(EC.element_to_be_clickable((By.XPATH, '//div[contains(@class,"menu-group-item")and contains(text(),"单选题")]/span[@infer="MenuRadio"]')))
        single_choose.click()
        #输入标题
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="editorContent"]/div/div/div[1]/div[2]/div[1]/div/pre/div[1]/p'))).send_keys("教师")
        #输入问卷内容
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="editorContent"]/div/div/div[2]/div/div/div/div[1]/div[1]/div[2]/div/pre/div[1]/p'))).send_keys("老师上课是否认真")
        #输入选项
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="editorContent"]/div/div/div[2]/div/div/div/div[1]/div[3]/div/div/div[1]/div/div/div[1]/div[1]/div/pre/div[1]/p'))).send_keys("是")
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="editorContent"]/div/div/div[2]/div/div/div/div[1]/div[3]/div/div/div[2]/div/div/div[1]/div[1]/div/pre/div[1]/p'))).send_keys("否")
        #点击“保存”按钮
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="editor"]/div[2]/div[1]/div[2]/div/button[4]/span'))).click()
        QuestDriver.getScreeShot()
    def QuestSucTest2(self):
        #创建考试
        wait = WebDriverWait(self.driver, 10)
        #点击创建考试
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[2]/div/div[2]/div/a[2]'))).click()
        # 输入标题
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="editorContent"]/div/div/div[1]/div[2]/div[1]/div/pre/div[1]/p'))).send_keys("数学")
        # 点击“单选题”按钮
        wait.until(EC.element_to_be_clickable((By.XPATH,'//div[contains(@class,"menu-group-item")and contains(text(),"单选题")]/span[@infer="MenuRadio"]'))).click()
        # 输入问卷内容
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="editorContent"]/div/div/div[2]/div/div/div/div[1]/div[1]/div[2]/div/pre/div[1]/p'))).send_keys("3+4")
        # 输入选项
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="editorContent"]/div/div/div[2]/div/div/div/div[1]/div[3]/div/div/div[1]/div/div/div[1]/div[1]/div/pre/div[1]/p'))).send_keys("7")
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="editorContent"]/div/div/div[2]/div/div/div/div[1]/div[3]/div/div/div[2]/div/div/div[1]/div[1]/div/pre/div[1]/p'))).send_keys("10")
        # 点击“保存”按钮
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="editor"]/div[2]/div[1]/div[2]/div/button[4]/span'))).click()
        QuestDriver.getScreeShot()
    def QuestSucTest3(self):
        #测试“设置”按钮
        wait = WebDriverWait(self.driver, 10)
        #把整体风格改为暗色
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/header[2]/div/div[3]/div/div/div/div[2]/span'))).click()
        wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"body > div:nth-child(8) > div > div > ul > li:nth-child(1) > span.ant-dropdown-menu-title-content"))).click()
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div[2]/div[3]/div/div/div/div/div[1]/div/div[2]'))).click()
        QuestDriver.getScreeShot()
    # 检查页面中的元素
    def QuestSucCheck(self):
        wait = WebDriverWait(self.driver, 10)
        #检查“首页”标题
        wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-page-header.ant-pro-page-container-warp-page-header.ant-pro-page-container-warp-page-header.ant-page-header-has-breadcrumb.ant-page-header-ghost > div.ant-page-header-heading > div > span")))
        #检查问卷数
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[2]/div/div/div/div/div/div[3]/div[1]/div/div[2]/span/span')))
        #检查考试数
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[2]/div/div/div/div/div/div[3]/div[2]/div/div[2]')))
        #检查“我的考试”按钮
        wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"#sk-layout > div > div > section > div.ant-pro-layout-container > main > div > div.ant-pro-grid-content > div > div > div > div.ant-col.ant-col-xs-24.ant-col-sm-24.ant-col-md-24.ant-col-lg-24.ant-col-xl-16 > div > div > div > div.ant-tabs-nav > div.ant-tabs-nav-wrap > div > div.ant-tabs-tab.ant-tabs-tab-active")))
        #检查“我的问卷”按钮
        wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"#sk-layout > div > div > section > div > main > div > div.ant-pro-grid-content > div > div > div > div.ant-col.ant-col-xs-24.ant-col-sm-24.ant-col-md-24.ant-col-lg-24.ant-col-xl-16 > div > div > div > div.ant-tabs-nav > div.ant-tabs-nav-wrap > div > div:nth-child(2)")))
        #检查“问卷记录”按钮
        wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#sk-layout > div > div > section > div > main > div > div.ant-pro-grid-content > div > div > div > div.ant-col.ant-col-xs-24.ant-col-sm-24.ant-col-md-24.ant-col-lg-24.ant-col-xl-16 > div > div > div > div.ant-tabs-nav > div.ant-tabs-nav-wrap > div > div:nth-child(3)")))
        #检查“考试记录”按钮
        wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#sk-layout > div > div > section > div > main > div > div.ant-pro-grid-content > div > div > div > div.ant-col.ant-col-xs-24.ant-col-sm-24.ant-col-md-24.ant-col-lg-24.ant-col-xl-16 > div > div > div > div.ant-tabs-nav > div.ant-tabs-nav-wrap > div > div:nth-child(4)")))
        #检查“创建问卷”按钮
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[2]/div/div[2]/div/a[1]')))
        #检查“创建考试"按钮
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[2]/div/div[2]/div/a[2]')))
        QuestDriver.getScreeShot()

我的项目代码

from selenium.webdriver.common.by import By
from common.utils import QuestDriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
#我的项目测试用例
class QuestProject:
    driver=""
    url=""
    def __init__(self):
        QuestDriver.Init_driver()
        self.driver = QuestDriver.driver
        self.url="http://49.235.61.184:8080/project"
        self.driver.get(self.url)
    def ProjectSucTest(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        wait=WebDriverWait(self.driver,10)
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[2]'))).click()
        #搜索项目名称
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[2]/div/div/div/div/div/div/div/span/span/input'))).send_keys("教师")
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[2]/div/div/div/div/div/div/div/span/span/span/button'))).click()
        #检查页面标识“我的项目”
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[1]/div[1]/div/span')))
        #点击列表按钮
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[1]/div[2]/div/div/div/div/div/div/div/div/label[2]/span[1]')))
        #点击网格按钮
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[1]/div[2]/div/div/div/div/div/div/div/div/label[1]')))
        #检查“新建”按钮
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[1]/div[1]/span/div/div/button'))).click()
        #检查“问卷调查”按钮
        wait.until(EC.visibility_of_element_located((By.XPATH,'/html/body/div[5]/div/div/ul/li[1]/span')))
        #检查“在线考试”按钮
        wait.until(EC.visibility_of_element_located((By.XPATH,'/html/body/div[5]/div/div/ul/li[2]/span')))
        #检查“回收站”按钮
        wait.until(EC.element_to_be_clickable((By.XPATH,'/html/body/div[5]/div/div/ul/li[7]/span'))).click()
        QuestDriver.getScreeShot()

我的练习代码

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from common.utils import QuestDriver
from selenium.webdriver.support.wait import WebDriverWait
#我的练习页面测试
class QuestExercise:
    driver=""
    url=""
    def __init__(self):
        QuestDriver.Init_driver()
        self.driver=QuestDriver.driver
        self.url="http://49.235.61.184:8080/exercise"
        self.driver.get(self.url)
    def ExeSucTest(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        wait=WebDriverWait(self.driver,10)
        #查看“我的练习”
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[3]'))).click()
        #定位“状态”
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div/main/div/div[2]/div/div/div[2]/div[1]/form/div/div[1]/div/div/div[1]/label')))
        #点击"查询"
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div/main/div/div[2]/div/div/div[2]/div[1]/form/div/div[2]/div/div/div[2]/div/div/div/div/div/div[2]/button'))).click()
        #点击“刷新”
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div[2]/div[2]/div/div[1]/div/div[2]/div/div/div[1]'))).click()
        #点击“继续答题”按钮
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div/table/tbody/tr/td[6]/div/div[1]'))).click()
        #点击“测试题库”文件
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div[1]/div[1]/div[1]/div/div[2]'))).click()
        #检查“开始答题”按钮
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div[2]/div[2]/div/div[2]/div/div/div/div/div/table/tbody/tr[1]/td[3]')))
        QuestDriver.getScreeShot()

我的题库代码

import time

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from common.utils import QuestDriver

#测试 题库中心——我的题库
class QuestIndex:
    driver=""
    url=""
    def __init__(self):
        QuestDriver.Init_driver()
        self.driver=QuestDriver.driver
        self.url="http://49.235.61.184:8080/repo/index"
        self.driver.get(self.url)
    def Login(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        wait=WebDriverWait(self.driver, 10)
        wait.until(EC.element_to_be_clickable(
            (By.XPATH, '//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[4]'))).click()
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                               '//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[4]//li[@title="我的题库"]'))).click()

    def IndexSucText(self):
        self.Login()
        wait = WebDriverWait(self.driver, 10)
        wait.until(EC.element_to_be_clickable(
            (By.XPATH, '//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[4]'))).click()
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[4]//li[@title="我的题库"]'))).click()
        #测试搜索栏
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="name"]'))).send_keys("测试")
        #点击查询
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[1]/form/div/div[3]/div/div/div[2]/div/div/div/div[1]/div/div[2]/button'))).click()
        #定位“题库列表”
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[2]/div/div[1]/div/div[1]/div')))

        QuestDriver.getScreeShot()
    def IndexSucBank(self):
        self.Login()
        #新建题库
        wait=WebDriverWait(self.driver, 10)
        #点击“新建”
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div/main/div/div[2]/div/div/div/div[2]/div/div[1]/div/div[2]/div[1]/div/div/button'))).click()
        #因为点击新建之后的页面和之前的页面id定位元素有的一样,所以要限制查询范围
        drawer=self.driver.find_element(By.CLASS_NAME, "ant-drawer-wrapper-body")
        #输入题库名称
        drawer.find_element(By.CSS_SELECTOR,"#name").send_keys("语文课本")
        #输入题库分类
        drawer.find_element(By.XPATH, '//*[@id="category"]').send_keys("语文")
        #选择题库类型
        drawer.find_element(By.CSS_SELECTOR,"#mode").click()

        #因为下拉弹窗是在虚拟列表当中,想要正确定位它,首先要把下拉弹窗的页面给固定住
        #打开浏览器开发者工具,点击源代码,在源代码的右侧边栏找到事件侦听器断点,找到鼠标,点击鼠标下的click
        #显示在调试信息中暂停,切回到元素,再点击左上角选择元素按钮,这时用鼠标点击一下下拉弹窗里的任意选项
        select_option = drawer.find_element(By.CLASS_NAME, "rc-virtual-list-holder-inner")
        option = select_option.find_element(By.XPATH, './/div[@title="问卷"]')
        #把目标元素滚动到可视区域内,然后用JS直接除法元素的点击事件
        self.driver.execute_script("arguments[0].scrollIntoView(true);", option)
        self.driver.execute_script("arguments[0].click();", option)

        #添加到共享题库
        drawer.find_element(By.XPATH,'/html/body/div[5]/div/div[3]/div/div/div[2]/form/div[1]/div/div[5]/div/div/div[2]/div/div').click()
        #添加到练习题库
        drawer.find_element(By.XPATH,'//*[@id="isPractice"]').click()
        #输入题库描述
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="description"]'))).send_keys("语文的课本内容")
        #点击“确定”
        wait.until(EC.element_to_be_clickable((By.XPATH,'/html/body/div[5]/div/div[3]/div/div/div[3]/div/div/div[2]/button'))).click()
        QuestDriver.getScreeShot()
    def IndexFailBank(self):
        #=======新建题库失败======

        self.Login()
        # 新建题库
        wait = WebDriverWait(self.driver, 10)
        # 点击“新建”
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                               '//*[@id="sk-layout"]/div/div/section/div/main/div/div[2]/div/div/div/div[2]/div/div[1]/div/div[2]/div[1]/div/div/button'))).click()
        drawer = self.driver.find_element(By.CLASS_NAME, "ant-drawer-wrapper-body")
        #题库名称为空
        drawer.find_element(By.CSS_SELECTOR,"#name")
        #题库类型
        time.sleep(2)
        drawer.find_element(By.CSS_SELECTOR,"#mode").click()
        select_option = drawer.find_element(By.CLASS_NAME, "rc-virtual-list-holder-inner")
        option = select_option.find_element(By.XPATH, './/div[@title="考试"]')
        self.driver.execute_script("arguments[0].scrollIntoView(true);", option)
        self.driver.execute_script("arguments[0].click();", option)
        wait.until(EC.element_to_be_clickable(
            (By.XPATH, '/html/body/div[5]/div/div[3]/div/div/div[3]/div/div/div[2]/button'))).click()
        name_ele=drawer.find_element(By.CSS_SELECTOR,"#name_help > div").text
        assert name_ele=="题库名称不能为空"
        #题库类型为空
        drawer.find_element(By.CSS_SELECTOR, "#name").clear()
        drawer.find_element(By.CSS_SELECTOR,"body > div:nth-child(8) > div > div.ant-drawer-content-wrapper > div > div > div.ant-drawer-body > form > div:nth-child(2) > div > div:nth-child(4) > div > div > div.ant-col.ant-form-item-control > div > div > div > span.ant-select-clear").click()

        drawer.find_element(By.CSS_SELECTOR, "#name").send_keys("语文课本")
        drawer.find_element(By.CSS_SELECTOR, "#mode").click()
        wait.until(EC.element_to_be_clickable(
            (By.XPATH, '/html/body/div[5]/div/div[3]/div/div/div[3]/div/div/div[2]/button'))).click()
        mold_ele=drawer.find_element(By.CSS_SELECTOR, "#mode_help > div").text
        assert mold_ele == "请选择题库类型"
        #点击“取消”按钮
        wait.until(EC.element_to_be_clickable((By.XPATH,'/html/body/div[5]/div/div[3]/div/div/div[3]/div/div/div[1]/button'))).click()
        QuestDriver.getScreeShot()

模版广场代码

import time

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from common.utils import QuestDriver

class QuestTemp:
    driver=""
    url=""
    def __init__(self):
        QuestDriver.Init_driver()
        self.driver = QuestDriver.driver
        self.url = "http://49.235.61.184:8080/repo/template"
        self.driver.get(self.url)

    def Login(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        wait = WebDriverWait(self.driver, 10)
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                              '//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[5]'))).click()
    #检查页面元素
    def TempCheckEle(self):
        self.Login()
        wait=WebDriverWait(self.driver, 10)
        #检查页面标题
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[1]/div/span')))
        #检查“”模版名字检索“”框
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[2]/div/div/div/div/div/span/span/input')))
        #检查“搜模版”
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[2]/div/div/div/div/div/span/span/span/button/span')))
        #检查“公有库”
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[3]/div/div[1]/div[1]/div/div[1]')))
        #检查“私有库”
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[3]/div/div[1]/div[1]/div/div[2]')))
        #检查“添加模版”
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[1]/span/div/div/button/span')))
        #检查“分类'
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[1]/div/form/div[1]/div[1]/span')))
        #检查“标签”
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[2]/div/div/div/div[1]/div/form/div[2]/div[1]/span')))
        #屏幕截图
        QuestDriver.getScreeShot()
    #测试“添加模版”功能
    def TempSucAddTest(self):
        self.Login()
        wait = WebDriverWait(self.driver, 10)
        #点击“添加模版”
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div[1]/div[1]/span/div/div/button'))).click()
        #点击考试题型-“单选题”
        wait.until(EC.element_to_be_clickable((By.XPATH, '//div[contains(@class,"menu-group-item")and contains(text(),"单选题")]/span[@infer="MenuRadio"]'))).click()
        #点击信息题-“姓名”
        wait.until(EC.element_to_be_clickable((By.XPATH, '//div[contains(@class,"menu-group-item")and contains(text(),"姓名")]/span[@infer="MenuName"]'))).click()
        #单选题题干-先点击题干然后再输入
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="editorContent"]/div/div/div[2]/div/div[1]/div/div[1]/div[1]/div[2]/div'))).click()
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="editorContent"]/div/div/div[2]/div/div[1]/div/div[1]/div[1]/div[2]/div/pre/div[1]/p'))).send_keys("你最喜欢什么?")
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="editorContent"]/div/div/div[2]/div/div[1]/div/div[1]/div[3]/div/div/div[1]/div/div/div[1]/div[1]/div/pre/div[1]/p'))).send_keys("猫")
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="editorContent"]/div/div/div[2]/div/div[1]/div/div[1]/div[3]/div/div/div[2]/div/div/div[1]/div[1]/div/pre/div[1]/p'))).send_keys("狗")
        #点击“JSON”
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="editor"]/div[2]/div[1]/div[2]/div/button[3]/span'))).click()
        #点击“预览”
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="editor"]/div[2]/div[1]/div[2]/div/button[4]/span'))).click()
        #点击“编辑”
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="editor"]/div[2]/div[1]/div[2]/div/button[2]/span'))).click()
        #点击“保存”
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="editor"]/div[2]/div[1]/div[2]/div/button[5]/span'))).click()
        #弹出弹窗
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="survey-modal-container"]/div/div[2]/div/div[2]/div[2]')))
        #输入模版名称
        self.driver.find_element(By.CSS_SELECTOR,"#name").send_keys("自动化测试")
        #输入模版分类
        self.driver.find_element(By.CSS_SELECTOR,"#category").send_keys("测试")
        #添加到公共库-需要勾选的要元素,定位到最后是input
        self.driver.find_element(By.CSS_SELECTOR,"#survey-modal-container > div > div.ant-modal-wrap > div > div.ant-modal-content > div.ant-modal-body > form > div:nth-child(4) > div > div > div > div > label > span.ant-checkbox > input").click()
        #点击弹窗-“保存”
        self.driver.find_element(By.CSS_SELECTOR,"#survey-modal-container > div > div.ant-modal-wrap > div > div.ant-modal-content > div.ant-modal-footer > button.ant-btn.ant-btn-primary").click()
        #点击“关闭”
        time.sleep(3)
        wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="editor"]/div[2]/div[1]/div[2]/div/button[1]/span'))).click()
        #屏幕截图
        QuestDriver.getScreeShot()

个人设置代码

from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from common.utils import QuestDriver


class QuestPersonal:
    driver=""
    url=""
    def __init__(self):
        QuestDriver.Init_driver()
        self.driver=QuestDriver.driver
        self.url="http://49.235.61.184:8080/system/setting"
        self.driver.get(self.url)
    def Login(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("明明")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("789lxx")
        self.driver.find_element(By.CSS_SELECTOR,
                                 "#root > div > div.content___2zk1- > div.main___x4OjT > div > form > button").click()
        wait = WebDriverWait(self.driver, 10)
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                              '//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[6]'))).click()
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="sk-layout"]/div/div/section/aside/div/div[1]/ul/li[6]//li[@title="个人设置"]'))).click()
    #检查页面元素
    def PersonalSucCheck(self):
        self.Login()
        wait=WebDriverWait(self.driver, 10)
        #检查页面标题
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[1]')))
        #检查“更换头像'
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[2]/span/div/span/div/button')))
        #检查“姓名”标签
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[1]/div/div[1]/label')))
        #检查“姓名”输入框
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="name"]')))
        #检查“手机号”标签
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[2]/div/div[1]/label')))
        #检查“手机号”输入框
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="phone"]')))
        #检查“邮箱”标签
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[3]/div/div[1]/label')))
        #检查“邮箱”输入框
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="email"]')))
        #检查“个人简介”标签
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[4]/div/div[1]/label')))
        #检查“个人简介”输入框
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="profile"]')))
        #检查“提交'
        wait.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button')))
        #屏幕截图
        QuestDriver.getScreeShot()
    #更新个人信息(全部更新)
    def PerSucUpdate(self):
        self.Login()
        wait=WebDriverWait(self.driver, 10)
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[1]/div/div[2]/div/div/span/span'))).click()
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[2]/div/div[2]/div/div/span/span'))).click()
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[3]/div/div[2]/div/div/span/span'))).click()
        #因为很多Ant Design(前端框架)的输入框是双向绑定的,而不是单纯靠DOM的value,
        #clear()只会清空DOM里的文本,调用了元素的 value=''
        #因此要 点击+全选+删除
        #1.等待 textarea可点击
        profile_ele=self.driver.find_element(By.XPATH, '//*[@id="profile"]')
        #2.先点击输入框,确保它获得焦点(关键步骤)
        profile_ele.click()
        #3.Ctrl+A 全选所有文本
        profile_ele.send_keys(Keys.CONTROL +'a')
        #4.按 Delete 键删除选中内容
        profile_ele.send_keys(Keys.DELETE)

        #输入姓名
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="name"]'))).send_keys("admin")
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="phone"]'))).send_keys("17799996541")
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="email"]'))).send_keys("66666@qq.com")
        profile_ele.send_keys("大家好,我是一个....")
        wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button'))).click()
        QuestDriver.getScreeShot()
    #更新失败
    def PerFailUpdate(self):
        self.Login()
        wait=WebDriverWait(self.driver, 10)
        #姓名为空
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                               '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[1]/div/div[2]/div/div/span/span'))).click()
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                               '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button'))).click()
        actual=self.driver.find_element(By.XPATH,'//*[@id="name_help"]/div').text
        assert actual=="请输入您的昵称!"
        #手机号为空
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="name"]'))).send_keys("admin")
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                               '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[2]/div/div[2]/div/div/span/span'))).click()
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                               '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button'))).click()
        actual = self.driver.find_element(By.XPATH, '//*[@id="phone_help"]/div').text
        assert actual == "请输入您的联系电话!"
        #邮箱为空
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="phone"]'))).send_keys("17799996541")
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                               '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[3]/div/div[2]/div/div/span/span'))).click()
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                               '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button'))).click()
        actual = self.driver.find_element(By.XPATH, '//*[@id="email_help"]/div').text
        assert actual == "请输入您的邮箱!"
        #个人简介为空
        wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="email"]'))).send_keys("66666@qq.com")
        profile_ele = self.driver.find_element(By.XPATH, '//*[@id="profile"]')
        profile_ele.click()
        profile_ele.send_keys(Keys.CONTROL + 'a')
        profile_ele.send_keys(Keys.DELETE)
        wait.until(EC.element_to_be_clickable((By.XPATH,
                                               '//*[@id="sk-layout"]/div/div/section/div[2]/main/div/div/div/div[2]/div[2]/div[1]/form/div[5]/div[2]/button'))).click()
        actual = self.driver.find_element(By.XPATH, '//*[@id="profile_help"]/div').text
        assert actual == "请输入个人简介!"
        QuestDriver.getScreeShot()


RunTest.py

from common.utils import QuestDriver
from test import QuestEnroll
from test import QuestLogin
from test import QuestHome
from test import QuestProject
from test import QuestExercise
from test import QuestIndex
from test import QuestTemp
from test import QuestPersonal
if __name__ == '__main__':
    QuestDriver.Init_driver()
    #注册账号
    QuestEnroll.QuestEnroll().EnrollSucCheck()
    #QuestEnroll.QuestEnroll().EnrollSucTest()
    #注册失败
    #QuestEnroll.QuestEnroll().EnrollFailTest1()
    #QuestEnroll.QuestEnroll().EnrollFailTest2()
    #QuestEnroll.QuestEnroll().EnrollFailTest3()
    #QuestEnroll.QuestEnroll().EnrollFailTest4()
    #QuestEnroll.QuestEnroll().EnrollFailTest5()
    #登录账号
    #QuestLogin.QuestLogin().LoginSucTest()
    #登录失败
    #QuestLogin.QuestLogin().LoginFailTest1()
    #QuestLogin.QuestLogin().LoginFailTest2()
    #QuestLogin.QuestLogin().LoginFailTest3()
    #QuestLogin.QuestLogin().LoginFailTest4()
    #QuestLogin.QuestLogin().LoginFailTest5()
    #首页-创建问卷
    #QuestHome.QuestHome().QuestSucTest()
    #首页-创建考试
    #QuestHome.QuestHome().QuestSucTest2()
    #首页-更改整体风格
    #QuestHome.QuestHome().QuestSucTest3()
    #首页-检查页面元素
    #QuestHome.QuestHome().QuestSucTest4()
    #我的项目页面
    #QuestProject.QuestProject().ProjectSucTest()
    #我的练习页面
    #QuestExercise.QuestExercise().ExeSucTest()
    #题库中心-我的题库
    #QuestIndex.QuestIndex().IndexSucText()

    #QuestIndex.QuestIndex().IndexSucBank()
    #QuestIndex.QuestIndex().IndexFailBank()
    #模版广场
    #QuestTemp.QuestTemp().TempCheckEle()
    #QuestTemp.QuestTemp().TempSucAddTest()
    #系统管理-个人设置
    #QuestPersonal.QuestPersonal().PersonalSucCheck()
    #QuestPersonal.QuestPersonal().PerSucUpdate()
    QuestPersonal.QuestPersonal().PerFailUpdate()
    #退出浏览器
    QuestDriver.driver.quit()

更多推荐