音乐播放器
小刻的家
 
文章 标签
0

Powered by Gridea | Theme: Fog
载入天数...
载入时分秒...

偷税的垃圾作品(三)黑盒测试篇

真没想到还有第三期

感谢我的老师,有能力的话去支持下老师,b站up:白月黑羽编程
(https://space.bilibili.com/401981380)
(https://www.byhy.net/)

黑盒测试我采用了hytest软件,以下是它的优点:
1.上手非常简单
hytest 让大家直接用 Python 来写测试用例。
如果你有 Python编程经验,1小时就可以上手,1天就可以灵活使用

2.操作直观易懂
测试用例以 目录文件结构存放,清晰明了
初始化清除 机制清晰灵活
可以灵活地 挑选 要执行的测试用例

3.漂亮的测试报告

我特别喜欢第三点,下面展示一下测试报告的截图:

#hytest的使用
执行hytest 自动化非常简单:
只需要新建一个 项目目录 , 里面创建一个名为 cases 的子目录用来存放测试用例代码即可。

然后,打开命令行窗口cmd
进入自动化代码根目录,也就是 cases 的上层目录 (注意不是cases目录,是cases的父目录)
运行 hytest

python -m hytest.run

需要产生英文版的报告,只需要加上 参数 --lang=en

python -m hytest.run  --lang=en

不希望执行完测试后,自动打开测试报告,可以使用参数 --auto_open_report=no

hytest --auto_open_report=no

通常还需要创建一些其他的目录,比如
lib 目录 用来存放 测试用例 需要使用的共享代码库。
doc 目录 存放 一些说明文档

可以使用命令参数 --new 来创建一个 hytest 的自动化项目目录,里面会包含一个cases目录和一个示例代码文件。
比如,执行

hytest --new auto1

就会在当前目录下创建名为 auto1 的 项目目录

##举个例子

from hytest import STEP, INFO, CHECK_POINT

class UI_0101:
      
    def teststeps(self):
        
        STEP(1,'打开浏览器')
        var1 = 'sdf'
        INFO(f'var1 is {var1}')
        CHECK_POINT('打开成功', var1.startswith('1sd') ) 

        
        STEP(2,'登录')        
        CHECK_POINT('检查登录是否成功', True) 
    
        STEP(3,'查看菜单') 
        CHECK_POINT('检查菜单是否正确', True)  

###STEP 函数

用来声明每个测试步骤,这样日志报告更清晰

###INFO 函数

用来打印一些信息在日志和报告中,方便出现问题时定位。

当然,如果你在开发调试阶段也可以直接使用print,在终端查看内容

###CHECK_POINT 函数

用来声明测试过程中的每个检查点,任何一个检查点不通过,整个测试用例就被认为不通过。

缺省情况下,一个检查点不通过,后面的测试代码就不会继续执行。

如果你希望 某个检查点即使不通过,后续代码仍然继续执行,可以使用参数 failStop=False ,如下所示

def teststeps(self):

     CHECK_POINT('即使不通过也不中止1', False, failStop=False)

     CHECK_POINT('即使不通过也不中止2', False, failStop=False)

具体的学习请看老师的视频(https://www.bilibili.com/video/BV1bK4y1D7KZ/?p=2)

##我的完整的测试用例:

import time

from selenium import webdriver

from hytest import STEP, INFO, CHECK_POINT

from selenium.webdriver.common.by import By# 创建 WebDriver 对象,指明使用chrome浏览器驱动
path = "g:\tool"
wd = webdriver.Edge()


wd.get('http://127.0.0.1/mgr/sign.html')# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
class UI_0001:
    name = "不输入账号"

    def teststeps(self):
        STEP(1, '不输入管理员账号')
        element = wd.find_element(By.ID, 'password')
        element1 = wd.find_element(By.ID, 'username')
        element.click()
        element.send_keys('88888888')
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(5)
        alert = wd.switch_to.alert.text
        CHECK_POINT('弹窗:请输入用户名', alert == '请输入用户名')
        wd.switch_to.alert.accept()
        element.clear()
        element1.clear()
class UI_0002:
    name = "不输入密码"

    def teststeps(self):
        STEP(1, "不输入密码")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byhy')
        denglu = wd.find_element(By.TAG_NAME, 'button')
        time.sleep(5)
        denglu.click()
        alert = wd.switch_to.alert.text
        CHECK_POINT('弹窗:请输入密码', alert == '请输入密码')
        wd.switch_to.alert.accept()
        element.clear()
        element1.clear()
class UI_0003:
    name = "不存在的管理员账号byh"

    def teststeps(self):
        STEP(1, "输入账户byh和密码88888888")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byh')
        element1.click()
        element1.send_keys("88888888")
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(5)
        alert = wd.switch_to.alert.text
        CHECK_POINT('弹窗:登录失败 : 用户名或者密码错误', alert == '登录失败 : 用户名或者密码错误')
        wd.switch_to.alert.accept()
        element.clear()
        element1.clear()
class UI_0004:
    name = "正确的管理员账号和错误的密码8888888"

    def teststeps(self):
        STEP(1, "输入账户byhy和密码8888888")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byhy')
        element1.click()
        element1.send_keys("8888888")
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(5)
        alert = wd.switch_to.alert.text
        CHECK_POINT('弹窗:登录失败 : 用户名或者密码错误', alert == '登录失败 : 用户名或者密码错误')
        wd.switch_to.alert.accept()
        element.clear()
        element1.clear()
class UI_0005:
    name = "正确的管理员账号和错误的密码888888888"

    def teststeps(self):
        STEP(1, "输入账户byhy和密码888888888")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byhy')
        element1.click()
        element1.send_keys("888888888")
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(5)
        alert = wd.switch_to.alert.text
        CHECK_POINT('弹窗:登录失败 : 用户名或者密码错误', alert == '登录失败 : 用户名或者密码错误')
        wd.switch_to.alert.accept()
        element.clear()
        element1.clear()
class u1:
    ddt_cases = [
        {
            "name": "不输入密码",
            "para": ["byhy", None, "请输入密码"]
        },
        {
            "name": "不输入账户",
            "para": [None, "88888888", "请输入用户名"]
        },
        {
            "name": "输入账户byh和密码88888888",
            "para": ["byh", "88888888", "登录失败 : 用户名或者密码错误"]
        },
        {
            "name": "输入账户byhy和密码888888888",
            "para": ["byhy", "888888888", "登录失败 : 用户名或者密码错误"]
        }
    ]

    def teststeps(self):
        username, password, info = self.para
        if username is not None:
            wd.find_element(By.ID, "username").send_keys(username)

        if password is not None:
            wd.find_element(By.ID, "password").send_keys(password)

        wd.find_element(By.TAG_NAME, "button").click()

        time.sleep(2)

        text = wd.switch_to.alert.text
        wd.switch_to.alert.accept()
        CHECK_POINT('弹出提示', text == info)

    def teardown(self):
        username = wd.find_element(By.ID, "username")
        username.clear()
        password = wd.find_element(By.ID, "password")
        password.clear()
class UI_0101:
    name = "1. 使用正确的管理员账号、密码登录白月SMS系统\n2. 检查左侧菜单"

    def teststeps(self):
        STEP(1, "输入账户byhy和密码88888888")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byhy')
        element1.click()
        element1.send_keys("88888888")
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(5)

        STEP(2, "检查左侧菜单")
        lan = wd.find_elements(By.CSS_SELECTOR, '.sidebar-menu li span')
        names = []
        for i in lan:
            names.append(i.text)
        CHECK_POINT("显示栏名称", names[:3] == ['客户', '药品', '订单'])
        time.sleep(4)
        wd.find_element(By.CSS_SELECTOR, ".user-menu .dropdown-toggle").click()  # 点击管理员页面
        time.sleep(2)
        wd.find_element(By.CSS_SELECTOR, ".dropdown-menu .user-footer .pull-right").click()  # 点击退出登录
        time.sleep(2)
class UI_0102:
    name = "1. 使用正确的管理员账号、密码登录白月SMS系统\n2. 点击添加客户,输入客户名为 南京中医院 的客户"

    def teststeps(self):
        STEP(1, "输入账户byhy和密码88888888")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byhy')
        element1.click()
        element1.send_keys("88888888")
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(1)

        STEP(2, "点击添加客户,输入客户名为 南京中医院 的客户")
        wd.find_element(By.CSS_SELECTOR, ".btn-md span").click()  # 添加按钮
        time.sleep(2)
        name = wd.find_elements(By.CSS_SELECTOR, ".add-one-area .form-control")
        name[0].send_keys("南京中医院")
        name[1].send_keys("52276668")
        name[2].send_keys("江苏省南京市秦淮区大明路157号")
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".add-one-area .btn-xs").click()  # 确定按钮
        time.sleep(1)
        yiyuan = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field")  # 所有医院信息
        xianshi = []
        for i in yiyuan[:3]:
            xianshi.append(i.text)
        CHECK_POINT("显示三个东西", xianshi == ["客户名:南京中医院", "联系电话:52276668", "地址:江苏省南京市秦淮区大明路157号"])
        time.sleep(1)
        anniu = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .btn-group-sm .btn-xs")  # 删除新增的信息
        var = anniu[1]
        var.click()  # 弹窗点击确定
        time.sleep(1)
        alert = wd.switch_to.alert
        alert.accept()
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".user-menu .dropdown-toggle").click()  # 点击管理员页面
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".dropdown-menu .user-footer .pull-right").click()  # 点击退出登录
        time.sleep(1)
class UI_0103:
    name = "1. 使用正确的管理员账号、密码登录白月SMS系统\n2. 点击添加客户,输入客户名为 南京中医院 的客户\n然后再点击编辑,修改客户名为:南京省中医院"

    def teststeps(self):
        STEP(1, "输入账户byhy和密码88888888")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byhy')
        element1.click()
        element1.send_keys("88888888")
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(1)

        STEP(2, "点击添加客户,输入客户名为 南京中医院 的客户")
        wd.find_element(By.CSS_SELECTOR, ".btn-md span").click()  # 添加按钮
        time.sleep(2)
        name = wd.find_elements(By.CSS_SELECTOR, ".add-one-area .form-control")
        name[0].send_keys("南京中医院")
        name[1].send_keys("52276668")
        name[2].send_keys("江苏省南京市秦淮区大明路157号")
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".add-one-area .btn-xs").click()  # 确定按钮
        time.sleep(1)

        STEP(3, "然后再点击编辑,修改客户名为:南京省中医院")
        wd.find_element(By.CSS_SELECTOR,
                        ".search-result-item .search-result-item-actionbar .btn-group-sm .btn-outlined").click()  # 修改按钮
        time.sleep(2)
        rename = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .form-control")
        rename[0].clear()  # 清除内容
        rename[0].send_keys("南京省中医院")
        wd.find_element(By.CSS_SELECTOR, ".search-result-item-actionbar .btn-group-sm .btn-outlined").click()
        time.sleep(2)
        yiyuan = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field")  # 所有医院信息
        xianshi = []
        for i in yiyuan[:3]:
            xianshi.append(i.text)
        time.sleep(1)
        CHECK_POINT("检查是否被修改", xianshi[0] == "客户名:南京省中医院")
        time.sleep(2)
        anniu = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .btn-group-sm .btn-xs")  # 删除新增的信息
        var = anniu[1]
        var.click()
        time.sleep(1)
        alert = wd.switch_to.alert
        alert.accept()
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".user-menu .dropdown-toggle").click()  # 点击管理员页面
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".dropdown-menu .user-footer .pull-right").click()  # 点击退出登录
        time.sleep(1)
class UI_0105:
    name = "1. 使用正确的管理员账号、密码登录白月SMS系统\n2. 点击添加药品,输入正确格式的 药品名、编号和 描述\n点击创建"

    def teststeps(self):
        STEP(1, "输入账户byhy和密码88888888")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byhy')
        element1.click()
        element1.send_keys("88888888")
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(1)

        STEP(2, "点击添加药品,输入正确格式的 药品名、编号和 描述")
        wd.find_element(By.CSS_SELECTOR, ".main-sidebar .sidebar .sidebar-menu .fa-plus").click()
        time.sleep(2)
        wd.find_element(By.CSS_SELECTOR, ".container-fluid .add-one-area .btn-outlined .glyphicon-plus").click()
        time.sleep(1)
        yaoname = wd.find_elements(By.CSS_SELECTOR, ".col-md-8 .form-control")
        yaoname[0].send_keys("维A酸乳膏")
        yaoname[1].send_keys("H10930141")
        yaoname[2].send_keys("用于寻常痤疮、扁平苔疣、黏膜白斑、毛发红糠疹、毛囊角化病及银屑病的辅助治疗")
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".col-sm-12 .btn-xs").click()  # 确定按钮
        time.sleep(1)
        yao = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field")
        yaolist = []
        for i in yao:
            yaolist.append(i.text)
        CHECK_POINT("检查药品信息", yaolist[:3] == ['药品:维A酸乳膏', '编号:H10930141', '描述:用于寻常痤疮、扁平苔疣、黏膜白斑、毛发红糠疹、毛囊角化病及银屑病的辅助治疗'])
        anniu = wd.find_element(By.CSS_SELECTOR, ".search-result-item-actionbar .btn-group-sm label:nth-child(2)")
        anniu.click()
        time.sleep(1)
        alert = wd.switch_to.alert
        alert.accept()
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".user-menu .dropdown-toggle").click()  # 点击管理员页面
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".dropdown-menu .user-footer .pull-right").click()  # 点击退出登录
        time.sleep(1)
class UI_0106:
    name = "1. 使用正确的管理员账号、密码登录白月SMS系统\n2. 点击页脚处 链接 白月黑羽教学使用,点击访问官网\n" \
           "然后 在新打开的 白月黑羽教学网页,获取 页眉导航菜单中所有教程类目( 可以调用webdriver对象的maximize_window()方法最大化窗口," \
           "以便显示所有菜单 )\n3. 随后再回到 白月SMS系统网页,点击退出登录"

    def teststeps(self):
        STEP(1, "输入账户byhy和密码88888888")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byhy')
        element1.click()
        element1.send_keys("88888888")
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(1)
        search = wd.current_window_handle

        STEP(2, "点击页脚处 链接 白月黑羽教学使用,点击访问官网")
        wd.find_element(By.CSS_SELECTOR, ".main-footer .hidden-xs a:nth-child(1)").click()
        time.sleep(2)
        for handle in wd.window_handles:
            # 先切换到该窗口
            wd.switch_to.window(handle)
            # 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口
            if '白夜黑羽' in wd.title:
                # 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,
                break
        wd.maximize_window()  # 放大窗口
        neirong = wd.find_elements(By.XPATH, "//li[@class='nav-item']/a[@class='nav-link ']")
        list1 = []
        for i in neirong:
            list1.append(i.text)
        CHECK_POINT("对比目录的内容", list1 == ['Python基础', 'Python进阶', 'Qt图形界面', 'Django',
                                         '自动化测试', '性能测试', 'HTML/CSS', 'JS语言', 'JS Web'])

        STEP(3, "再回到 白月SMS系统网页,点击退出登录")
        wd.switch_to.window(search)
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".user-menu .dropdown-toggle").click()  # 点击管理员页面
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".dropdown-menu .user-footer .pull-right").click()  # 点击退出登录
        time.sleep(1)


ddt_cases = [
    {
        "para": ['青霉素盒装1', 'YP-32342341', '青霉素注射液,每支15ml,20支装']
    },
    {
        "para": ['青霉素盒装2', 'YP-32342342', '青霉素注射液,每支15ml,30支装']
    },
    {
        "para": ['青霉素盒装3', 'YP-32342343', '青霉素注射液,每支15ml,40支装']
    }
]
ddt_cases2 = [
    {"para": ['南京中医院1', '2551867851', '江苏省-南京市-秦淮区-汉中路-501']},
    {"para": ['南京中医院2', '2551867852', '江苏省-南京市-秦淮区-汉中路-502']},
    {"para": ['南京中医院3', '2551867853', '江苏省-南京市-秦淮区-汉中路-503']}

]


class UI_0107:

    def teststeps(self):
        STEP(1, "输入账户byhy和密码88888888")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byhy')
        element1.click()
        element1.send_keys("88888888")
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(1)

        # 登录

        STEP(2, "在系统中添加3种药品")

        for i in ddt_cases:
            wd.find_element(By.CSS_SELECTOR, ".main-sidebar .sidebar .sidebar-menu .fa-plus").click()  # 点击药品
            time.sleep(1)
            wd.find_element(By.CSS_SELECTOR,
                            ".container-fluid .add-one-area .btn-outlined .glyphicon-plus").click()  # 点击添加
            time.sleep(1)
            yaoname = wd.find_elements(By.CSS_SELECTOR, ".col-md-8 .form-control")
            yaoname[0].send_keys(i['para'][0])
            yaoname[1].send_keys(i['para'][1])
            yaoname[2].send_keys(i['para'][2])
            time.sleep(1)
            wd.find_element(By.CSS_SELECTOR, ".col-sm-12 .btn-xs").click()  # 确定按钮
        time.sleep(2)
        yao = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field")
        yaolist1 = []
        for x in yao:
            yaolist1.append(x.text)
        CHECK_POINT("检查是否添加成功", yaolist1[:9] == ['药品:青霉素盒装3', '编号:YP-32342343', '描述:青霉素注射液,每支15ml,40支装',
                                                 '药品:青霉素盒装2', '编号:YP-32342342', '描述:青霉素注射液,每支15ml,30支装',
                                                 '药品:青霉素盒装1', '编号:YP-32342341', '描述:青霉素注射液,每支15ml,20支装']
                    )

        STEP(3, "在系统中添加3个客户")
        for i in ddt_cases2:
            wd.find_element(By.CSS_SELECTOR, ".fa-user").click()  # 点击客户
            time.sleep(1)
            wd.find_element(By.CSS_SELECTOR, ".container-fluid .add-one-area .btn-md .glyphicon-plus").click()  # 点击添加
            time.sleep(1)
            kehuname = wd.find_elements(By.CSS_SELECTOR, ".col-sm-8 .form-control ")
            kehuname[0].send_keys(i['para'][0])
            kehuname[1].send_keys(i['para'][1])
            kehuname[2].send_keys(i['para'][2])
            time.sleep(1)
            wd.find_element(By.CSS_SELECTOR, ".col-sm-12 .btn-xs").click()  # 点击创建
            time.sleep(1)
        kehuliest = []
        kehu = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field ")
        for i in kehu:
            kehuliest.append(i.text)
        CHECK_POINT("检查信息是否正确",
                    kehuliest[:9] == ['客户名:南京中医院3', '联系电话:2551867853', '地址:江苏省-南京市-秦淮区-汉中路-503', '客户名:南京中医院2',
                                      '联系电话:2551867852', '地址:江苏省-南京市-秦淮区-汉中路-502', '客户名:南京中医院1', '联系电话:2551867851',
                                      '地址:江苏省-南京市-秦淮区-汉中路-501'])

        STEP(4, "进入订单管理界面,添加一个订单")
        wd.find_element(By.CSS_SELECTOR, ".fa-paperclip").click()  # 点击订单
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".container-fluid .add-one-area .btn-md .glyphicon-plus").click()  # 添加按钮
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".col-sm-8 .form-control").send_keys("南京中医院2")
        time.sleep(1)
        yiyuan = wd.find_element(By.CSS_SELECTOR, ".col-sm-8 div:nth-child(2) .form-control").send_keys("南京中医院2\n")
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".xxx option").click()
        yaopin = wd.find_element(By.CSS_SELECTOR, ".col-sm-8 div:nth-child(3) .form-control").send_keys("青霉素盒装1\n")
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".col-sm-8 div:nth-child(3) .xxx option").click()
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".col-sm-8 div:nth-child(3) input").send_keys("100")
        time.sleep(1)
        temporaryCacheButtonTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
        wd.find_element(By.CSS_SELECTOR, ".content-wrapper .container-fluid .add-one-area .col-sm-12 .btn-xs").click()

        time.sleep(1)
        order = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field")
        time.sleep(1)
        orderlist = []
        for i in order:
            orderlist.append(i.text)

        CHECK_POINT("检查是否正确", orderlist[:4] == ['订单:南京中医院2', f'日期:{temporaryCacheButtonTime}', '客户:南京中医院2',
                                                '药品:\n青霉素盒装1 * 100'])
        wd.find_element(By.CSS_SELECTOR, ".user-menu .dropdown-toggle").click()  # 点击管理员页面
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".dropdown-menu .user-footer .pull-right").click()  # 点击退出登录
        time.sleep(1)
class UI_0108:

    def teststeps(self):
        STEP(1, "输入账户byhy和密码88888888")
        element = wd.find_element(By.ID, 'username')
        element1 = wd.find_element(By.ID, 'password')
        element.click()
        element.send_keys('byhy')
        element1.click()
        element1.send_keys("88888888")
        denglu = wd.find_element(By.TAG_NAME, 'button')
        denglu.click()
        time.sleep(1)

        # 登录

        STEP(2, "判断是不是空的")

        wd.find_element(By.CSS_SELECTOR, ".fa-paperclip").click()  # 点击订单
        while True:
            try:
                wd.find_element(By.CSS_SELECTOR, ".container-fluid .search-result-item").text
            except:
                break
            else:
                wd.find_element(By.CSS_SELECTOR, ".search-result-item .search-result-item-actionbar .btn-xs").click()
                time.sleep(1)
                alert = wd.switch_to.alert
                alert.accept()
                time.sleep(1)

        wd.find_element(By.CSS_SELECTOR, ".fa-user").click()
        while True:
            try:
                wd.find_element(By.CSS_SELECTOR, ".container-fluid .search-result-item").text
            except Exception as e:
                break
            else:
                wd.find_element(By.CSS_SELECTOR,
                                ".search-result-item .search-result-item-actionbar label:nth-child(2)").click()
                alert = wd.switch_to.alert
                alert.accept()
                time.sleep(1)

        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".main-sidebar .sidebar .sidebar-menu .fa-plus").click()  # 点击药品
        while True:
            try:
                wd.find_element(By.CSS_SELECTOR, ".container-fluid .search-result-item").text
            except:
                break
            else:
                wd.find_element(By.CSS_SELECTOR,
                                ".search-result-item .search-result-item-actionbar label:nth-child(2)").click()
                alert = wd.switch_to.alert
                alert.accept()
                time.sleep(1)

        wd.find_element(By.CSS_SELECTOR, ".fa-paperclip").click()  # 点击订单
        order = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field")  # 检查订单是不是空的
        orderlist = []
        for i in order:
            orderlist.append(i.text)
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".fa-user").click()
        kehuliest = []
        kehu = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field ")  # 检查客户是不是空的
        for i in kehu:
            kehuliest.append(i.text)
            time.sleep(1)

        wd.find_element(By.CSS_SELECTOR, ".main-sidebar .sidebar .sidebar-menu .fa-plus").click()  # 点击药品
        yao = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field")  # 检查药是不是空的
        yaolist1 = []
        for x in yao:
            yaolist1.append(x.text)
            time.sleep(1)

        CHECK_POINT("检查列表是不是为空", orderlist == [], kehuliest == [], yaolist1 == [])

        STEP(3, "在系统中添加3种药品")

        for i in ddt_cases:
            wd.find_element(By.CSS_SELECTOR, ".main-sidebar .sidebar .sidebar-menu .fa-plus").click()  # 点击药品
            time.sleep(1)
            wd.find_element(By.CSS_SELECTOR,
                            ".container-fluid .add-one-area .btn-outlined .glyphicon-plus").click()  # 点击添加
            time.sleep(1)
            yaoname = wd.find_elements(By.CSS_SELECTOR, ".col-md-8 .form-control")
            yaoname[0].send_keys(i['para'][0])
            yaoname[1].send_keys(i['para'][1])
            yaoname[2].send_keys(i['para'][2])
            time.sleep(1)
            wd.find_element(By.CSS_SELECTOR, ".col-sm-12 .btn-xs").click()  # 确定按钮
        time.sleep(2)
        yao = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field")
        yaolist1 = []
        for x in yao:
            yaolist1.append(x.text)
        CHECK_POINT("检查是否添加成功", yaolist1[:9] == ['药品:青霉素盒装3', '编号:YP-32342343', '描述:青霉素注射液,每支15ml,40支装',
                                                 '药品:青霉素盒装2', '编号:YP-32342342', '描述:青霉素注射液,每支15ml,30支装',
                                                 '药品:青霉素盒装1', '编号:YP-32342341', '描述:青霉素注射液,每支15ml,20支装']
                    )

        STEP(4, "在系统中添加3个客户")
        for i in ddt_cases2:
            wd.find_element(By.CSS_SELECTOR, ".fa-user").click()  # 点击客户
            time.sleep(1)
            wd.find_element(By.CSS_SELECTOR, ".container-fluid .add-one-area .btn-md .glyphicon-plus").click()  # 点击添加
            time.sleep(1)
            kehuname = wd.find_elements(By.CSS_SELECTOR, ".col-sm-8 .form-control ")
            kehuname[0].send_keys(i['para'][0])
            kehuname[1].send_keys(i['para'][1])
            kehuname[2].send_keys(i['para'][2])
            time.sleep(1)
            wd.find_element(By.CSS_SELECTOR, ".col-sm-12 .btn-xs").click()  # 点击创建
            time.sleep(1)
        kehuliest = []
        kehu = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field ")
        for i in kehu:
            kehuliest.append(i.text)
        CHECK_POINT("检查信息是否正确",
                    kehuliest[:9] == ['客户名:南京中医院3', '联系电话:2551867853', '地址:江苏省-南京市-秦淮区-汉中路-503', '客户名:南京中医院2',
                                      '联系电话:2551867852', '地址:江苏省-南京市-秦淮区-汉中路-502', '客户名:南京中医院1', '联系电话:2551867851',
                                      '地址:江苏省-南京市-秦淮区-汉中路-501'])

        STEP(5, "进入订单管理界面,添加一个订单")
        wd.find_element(By.CSS_SELECTOR, ".fa-paperclip").click()  # 点击订单
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".container-fluid .add-one-area .btn-md .glyphicon-plus").click()  # 添加按钮
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".col-sm-8 .form-control").send_keys("南京中医院2")
        time.sleep(1)
        yiyuan = wd.find_element(By.CSS_SELECTOR, ".col-sm-8 div:nth-child(2) .form-control").send_keys("南京中医院2\n")
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".xxx option").click()
        yaopin = wd.find_element(By.CSS_SELECTOR, ".col-sm-8 div:nth-child(3) .form-control").send_keys("青霉素盒装1\n")
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".col-sm-8 div:nth-child(3) .xxx option").click()
        time.sleep(1)
        wd.find_element(By.CSS_SELECTOR, ".col-sm-8 div:nth-child(3) input").send_keys("100")
        time.sleep(1)
        temporaryCacheButtonTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
        wd.find_element(By.CSS_SELECTOR, ".content-wrapper .container-fluid .add-one-area .col-sm-12 .btn-xs").click()

        time.sleep(1)
        order = wd.find_elements(By.CSS_SELECTOR, ".search-result-item .search-result-item-field")
        time.sleep(1)
        orderlist = []
        for i in order:
            orderlist.append(i.text)

        CHECK_POINT("检查是否正确", orderlist[:4] == ['订单:南京中医院2', f'日期:{temporaryCacheButtonTime}', '客户:南京中医院2',
                                                '药品:\n青霉素盒装1 * 100'])

##结尾
太长了www,这个是基于白月黑羽SMS系统进行的测试,没啥说的,下面就是api接口的学习了