偷税的垃圾作品(三)黑盒测试篇
真没想到还有第三期
感谢我的老师,有能力的话去支持下老师,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接口的学习了


