白月黑羽教python之selenium:课后练习

最近自学了白月黑羽老师的自动化测试课程,并非课后作业的准确答案,只是为了个人学习记录,如有不足欢迎留言指点,谢谢大家。

前置条件,使用正确的管理员账号、密码登录白月SMS系统

# login_success.pydef login_success(driver, username, password):# 找到用户名输入正确用户element_username = driver.find_element_by_id('username')element_username.clear()element_username.send_keys(username)# 找到用户名输入正确用户element_password = driver.find_element_by_id('password')element_password.clear()element_password.send_keys(password)# 找到登录按钮并点击button_submit = driver.find_element_by_tag_name('button')button_submit.click()

测试用例中,每一条用例都有相同的测试步骤,即为成功登录SMS系统,故将其写为公共方法,减少代码量。

测试用例UI-0101截图及李光洙个人代码完成

# UI-0101.py"""
本段代码为测试’tcs-selenium.xlsx‘文件中管理员操作测试用例
测试用例内容为UI-0101
"""from login_success import login_success
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
# 隐式等待最大10秒
driver.implicitly_wait(10)
# 打开待测试环境
driver.get('http://127.0.0.1/mgr/sign.html')# 成功登录
login_success(driver, 'byhy', '88888888')# 实际结果
actual_result = ''# 定位左侧菜单栏
elements = driver.find_elements_by_css_selector('.sidebar-menu span')
for element in elements[0:3]:actual_result += ''.join(element.text)print('页面前三项菜单名称分别为: ', actual_result)
# 预期结果
expected_result = '客户药品订单'
print('预期结果为: ', expected_result)# 通过try抛出异常进行断言判断
try:assert expected_result == actual_resultprint('UI_0101 PASS,实际结果与预期结果一致!')
except Exception as e:print('UI_0101 FAIL,实际结果与预期结果不一致!', format(e))sleep(1)
driver.quit()

测试用例UI-0102截图及李光洙个人代码完成

# UI-0102.py"""
本段代码为测试’tcs-selenium.xlsx‘文件中管理员操作测试用例
测试用例内容为UI-0102
"""from login_success import login_success
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
# 隐式等待最大10秒
driver.implicitly_wait(10)
# 打开待测试环境
driver.get('http://127.0.0.1/mgr/sign.html')# 成功登录
login_success(driver, 'byhy', '88888888')# 创建客户
# 找到添加客户按钮并点击
customer_button = driver.find_element_by_css_selector('.content>.col-lg-12>button')
customer_button.click()
# 输入客户信息,客户名,联系电话,地址
customer_name = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(1) input')
customer_name.send_keys('南京中医院')
customer_mobile = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(2) input')
customer_mobile.send_keys('13370082190')
customer_address = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(3) textarea')
customer_address.send_keys('南京中医院110号')# 点击创建按钮
create_button = driver.find_element_by_css_selector('.content>.col-lg-12>.col-lg-12 button:nth-child(1)')
create_button.click()# 点击取消按钮
sleep(1)
create_button = driver.find_element_by_css_selector('.content>.col-lg-12>.col-lg-12 button:nth-child(2)')
create_button.click()# 实际结果
actual_result = ''# 取出列表中新增的客户信息
customer_info = driver.find_elements_by_css_selector('.content>div:nth-of-type(3) .search-result-item-field>span:nth-child(2)')
for element in customer_info:actual_result += ''.join(element.text)print('列表中显示的客户信息为为: ', actual_result)# 预期结果
expected_result = '南京中医院13370082190南京中医院110号'
print('预期结果为: ', expected_result)# # 通过try抛出异常进行断言判断
try:assert expected_result == actual_resultprint('UI_0102 PASS,实际结果与预期结果一致!')
except Exception as e:print('UI_0102 FAIL,实际结果与预期结果不一致!', format(e))sleep(1)
driver.quit()

测试用例UI-0103截图及李光洙个人代码完成

# UI-0103.py"""
本段代码为测试’tcs-selenium.xlsx‘文件中管理员操作测试用例
测试用例内容为UI-0103
"""from login_success import login_success
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
# 隐式等待最大10秒
driver.implicitly_wait(10)
# 打开待测试环境
driver.get('http://127.0.0.1/mgr/sign.html')# 成功登录
login_success(driver, 'byhy', '88888888')# 实际结果
actual_result = ''# 定位左侧菜单栏
# 找到列表中用例0102新增的客户信息,点击编辑按钮
edit_customer = driver.find_element_by_css_selector('.content>div:nth-of-type(3) .search-result-item-actionbar label:nth-of-type(1)')
edit_customer.click()# 修改客户名称
customer_name = driver.find_element_by_css_selector('.content>div:nth-of-type(3)>div>div:nth-of-type(1)>input')
customer_name.clear()
customer_name.send_keys('南京省中医院')# 修改客户信息后点击确定
confirm_driver = driver.find_element_by_css_selector('.content>div:nth-of-type(3) .search-result-item-actionbar label:nth-of-type(1)')
confirm_driver.click()# 等待客户信息更新
sleep(1)# 取出列表中新增的客户信息
customer_info = driver.find_elements_by_css_selector('.content>div:nth-of-type(3) .search-result-item-field>span:nth-child(2)')
for element in customer_info:actual_result += ''.join(element.text)print('列表中显示的客户信息为为: ', actual_result)# 预期结果
expected_result = '南京省中医院13370082190南京中医院110号'
print('预期结果为: ', expected_result)# # 通过try抛出异常进行断言判断
try:assert expected_result == actual_resultprint('UI_0103 PASS,实际结果与预期结果一致!')
except Exception as e:print('UI_0103 FAIL,实际结果与预期结果不一致!', format(e))sleep(1)
driver.quit()

测试用例UI-0105截图及李光洙个人代码完成

# UI-0105.py"""
本段代码为测试’tcs-selenium.xlsx‘文件中管理员操作测试用例
测试用例内容为UI-0105
"""from login_success import login_success
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
# 隐式等待最大10秒
driver.implicitly_wait(10)
# 打开待测试环境
driver.get('http://127.0.0.1/mgr/sign.html')# 成功登录
login_success(driver, 'byhy', '88888888')# 创建药品
# 点击菜单栏药品,进入药品信息页面
medicines_menu = driver.find_element_by_css_selector('[href="#/medicines"]')
medicines_menu.click()# 找到添加药品按钮并点击
medicines_button = driver.find_element_by_css_selector('.content>.col-lg-12>button')
medicines_button.click()# 输入药品信息,药品名,编号,描述
medicines_name = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(1) input')
medicines_name.send_keys('感冒胶囊')
medicines_number = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(2) input')
medicines_number.send_keys('1005')
medicines_describe = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(3) textarea')
medicines_describe.send_keys('感冒胶囊用来治疗感冒有很好的效果')# 点击创建按钮
create_button = driver.find_element_by_css_selector('.content>.col-lg-12>.col-lg-12 button:nth-child(1)')
create_button.click()# 点击取消按钮
sleep(1)
create_button = driver.find_element_by_css_selector('.content>.col-lg-12>.col-lg-12 button:nth-child(2)')
create_button.click()# 实际结果
actual_result = ''# 取出列表中新增的药品信息
medicines_info = driver.find_elements_by_css_selector('.content>div:nth-of-type(3) .search-result-item-field>span:nth-child(2)')
for element in medicines_info:actual_result += ''.join(element.text)print('列表中显示的药品信息为为: ', actual_result)# 预期结果
expected_result = '感冒胶囊1005感冒胶囊用来治疗感冒有很好的效果'
print('预期结果为: ', expected_result)# # 通过try抛出异常进行断言判断
try:assert expected_result == actual_resultprint('UI_0105 PASS,实际结果与预期结果一致!')
except Exception as e:print('UI_0105 FAIL,实际结果与预期结果不一致!', format(e))sleep(1)
driver.quit()

测试用例UI-0106截图及李光洙个人代码完成

# UI-0106.py"""
本段代码为测试’tcs-selenium.xlsx‘文件中管理员操作测试用例
测试用例内容为UI-0106
"""from login_success import login_success
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
# 隐式等待最大10秒
driver.implicitly_wait(10)
# 打开待测试环境
driver.get('http://127.0.0.1/mgr/sign.html')# 成功登录
login_success(driver, 'byhy', '88888888')# 最大化窗口页面
driver.maximize_window()# 记录当前页面
# mainWindow变量保存当前窗口的句柄
mainWindow = driver.current_window_handle
url1 = driver.current_url
print('当前页面地址为: ', url1)# 点击页脚处链接 白月黑羽教学使用,点击访问官网
link = driver.find_element_by_css_selector('.pull-right [href="http://www.python3.vip"]')
link.click()sleep(1)# 切换到白月黑羽官网教学页面
for handle in driver.window_handles:# 先切换到该窗口driver.switch_to.window(handle)# 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口if u'教Python' in driver.title:# 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,break# 实际结果
actual_result = ''# 取出列表中新增的药品信息
menu_bar_list = driver.find_elements_by_css_selector('.navbar-nav .nav-item span')
for menu in menu_bar_list:actual_result += ''.join(menu.text)print('导航菜单栏显示的信息为: ', actual_result)# 预期结果
expected_result = 'Python基础Python进阶图形界面Web开发自动化测试性能测试常见问题其它'
print('预期的导航菜单栏结果为: ', expected_result)# # 通过try抛出异常进行断言判断
try:assert expected_result == actual_resultprint('UI_0106 PASS,验证页面导航菜单栏显示的信息与预期结果一致!')
except Exception as e:print('UI_0106 FAIL,验证页面导航菜单栏显示的信息与预期结果不一致!', format(e))# 通过前面保存的老窗口的句柄,自己切换到老窗口
driver.switch_to.window(mainWindow)
url2 = driver.current_url
print('返回页面地址为: ', url2)# # 通过try抛出异常进行断言判断
try:assert url1 == url2print('UI_0106 PASS,验证返回到登录页面成功!')
except Exception as e:print('UI_0106 FAIL,验证返回到登录页面失败!', format(e))sleep(1)
# 点击管理员
driver.find_element_by_css_selector('.user .dropdown-toggle').click()
# 点击退出登录
driver.find_element_by_css_selector('.user-footer .pull-right').click()

测试用例UI-0107截图


测试用例UI-0107与UI-0108相比,缺少了前置条件,删除系统中已有的信息,所以代码中不调用del_exist_info()方法即可。

测试用例UI-0108截图及李光洙个人代码完成

# UI-0108.py"""
本段代码为测试’tcs-selenium.xlsx‘文件中管理员操作测试用例
测试用例内容为UI-0108
"""from login_success import login_success
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Selectdriver = webdriver.Chrome()
# 隐式等待最大10秒
driver.implicitly_wait(5)
# 打开待测试环境
driver.get('http://127.0.0.1/mgr/sign.html')# 成功登录
login_success(driver, 'byhy', '88888888')def del_exist_info():# 先找到系统中已经存在的信息,依次删除,然后再重新添加新的药品、客户、订单等信息def def_info():elements = driver.find_elements_by_css_selector('.search-result-item-actionbar label:nth-last-of-type(1)')if elements:for element in elements:element.click()driver.switch_to.alert.accept()sleep(0.5)# 先删除订单,因为订单关联药品和客户,若存在订单信息,则药品与客户信息将出现删除错误# 点击菜单栏订单,进入订单信息页面order_menu = driver.find_element_by_css_selector('[href="#/orders"]')order_menu.click()def_info()# 点击菜单栏药品,进入药品信息页面medicines_menu = driver.find_element_by_css_selector('[href="#/medicines"]')medicines_menu.click()def_info()# 点击菜单栏客户,进入客户信息页面customer_menu = driver.find_element_by_css_selector('[href="#/customers"]')customer_menu.click()def_info()def create_medicines():# 创建药品# 点击菜单栏药品,进入药品信息页面medicines_menu = driver.find_element_by_css_selector('[href="#/medicines"]')medicines_menu.click()# 找到添加药品按钮并点击medicines_button = driver.find_element_by_css_selector('.content>.col-lg-12>button')medicines_button.click()# 依次添加3种药品medicines_data = [['青霉素盒装1', 'YP-32342341', '青霉素注射液,每支15ml,20支装'],['青霉素盒装2', 'YP-32342342', '青霉素注射液,每支15ml,30支装'],['青霉素盒装3', 'YP-32342343', '青霉素注射液,每支15ml,40支装']]for i in range(len(medicines_data)):# print(medicines_data[i][j])# 输入药品信息,药品名,编号,描述medicines_name = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(1) input')medicines_name.send_keys(medicines_data[i][0])medicines_number = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(2) input')medicines_number.send_keys(medicines_data[i][1])medicines_describe = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(3) textarea')medicines_describe.send_keys(medicines_data[i][2])# 点击创建按钮create_button = driver.find_element_by_css_selector('.content>.col-lg-12>.col-lg-12 button:nth-child(1)')create_button.click()sleep(1)# 点击取消按钮sleep(1)create_button = driver.find_element_by_css_selector('.content>.col-lg-12>.col-lg-12 button:nth-child(2)')create_button.click()print('药品添加成功')def create_customer():# 创建客户# 点击菜单栏客户,进入客户信息页面customer_menu = driver.find_element_by_css_selector('[href="#/customers"]')customer_menu.click()# 找到添加客户按钮并点击customer_button = driver.find_element_by_css_selector('.content>.col-lg-12>button')customer_button.click()# 依次添加3个客户customer_data = [['南京中医院1', '2551867851', '江苏省-南京市-秦淮区-汉中路-501'],['南京中医院2', '2551867852', '江苏省-南京市-秦淮区-汉中路-502'],['南京中医院3', '2551867853', '江苏省-南京市-秦淮区-汉中路-503']]for i in range(len(customer_data)):# 找到添加客户按钮并点击customer_button = driver.find_element_by_css_selector('.content>.col-lg-12>button')customer_button.click()# 输入客户信息,客户名,联系电话,地址customer_name = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(1) input')customer_name.send_keys(customer_data[i][0])customer_mobile = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(2) input')customer_mobile.send_keys(customer_data[i][1])customer_address = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(3) textarea')customer_address.send_keys(customer_data[i][2])# 点击创建按钮create_button = driver.find_element_by_css_selector('.content>.col-lg-12>.col-lg-12 button:nth-child(1)')create_button.click()sleep(1)# 点击取消按钮sleep(1)create_button = driver.find_element_by_css_selector('.content>.col-lg-12>.col-lg-12 button:nth-child(2)')create_button.click()print('客户添加成功')def create_order():# 创建订单# 点击菜单栏药品,进入订单信息页面order_menu = driver.find_element_by_css_selector('[href="#/orders"]')order_menu.click()# 找到添加客户按钮并点击customer_button = driver.find_element_by_css_selector('.content>.col-lg-12>button')customer_button.click()# 订单信息order_info = {'order_name': '李光洙的订单', 'customer': '南京中医院2', 'medicine': '青霉素盒装1', 'number': '100盒'}# 输入订单名称order_name = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(1) input')order_name.send_keys(order_info['order_name'])# 创建select对象,通过select对象选中 南京中医院2customer = Select(driver.find_element_by_css_selector('.col-lg-8 div:nth-child(2) select'))customer.select_by_visible_text(order_info['customer'])# 创建select对象,通过select对象选中 青霉素盒装1medicines = Select(driver.find_element_by_css_selector('.col-lg-8 div:nth-child(3) select'))medicines.select_by_visible_text(order_info['medicine'])# 选中药品后,输入药品数量sleep(1)medicines_number = driver.find_element_by_css_selector('.col-lg-8 div:nth-child(3) div input')medicines_number.send_keys(order_info['number'])# 点击创建按钮create_button = driver.find_element_by_css_selector('.content>.col-lg-12>.col-lg-12 button:nth-child(1)')create_button.click()# 点击取消按钮sleep(1)create_button = driver.find_element_by_css_selector('.content>.col-lg-12>.col-lg-12 button:nth-child(2)')create_button.click()print('订单添加成功')def check_order():# 取出列表中新增的订单信息order_name = driver.find_element_by_css_selector('.content>div:nth-of-type(3)>div:nth-of-type(1)>span:nth-child(2)')# 实际结果actual_result = order_name.textprint('列表中显示的订单名称为: ', actual_result)# 预期结果expected_result = '李光洙的订单'print('预期结果为: ', expected_result)# # 通过try抛出异常进行断言判断try:assert expected_result == actual_resultprint('UI_0108 PASS,实际结果与预期结果一致,添加订单成功!')except Exception as e:print('UI_0108 FAIL,实际结果与预期结果不一致,添加订单失败!', format(e))if __name__ == '__main__':del_exist_info()create_medicines()create_customer()create_order()check_order()

初入自动化测试没几天,故代码中很多地方写的比较幼稚,写博客的目的是为了帮助自己日后回顾,做一个学习记录,自己只是一个自动化测试领域的小学生,没有“为人师”的意思,仅此而已,欢迎大家批评指正,共同进步。

白月黑羽教python之selenium:课后练习作业二相关推荐

  1. 白月黑羽教python之selenium:课后练习作业一

    白月黑羽教python之selenium:课后练习 最近自学了白月黑羽老师的自动化测试课程,并非课后作业的准确答案,只是为了个人学习记录,如有不足欢迎留言指点,谢谢大家. 测试用例截图 个人完成代码 ...

  2. 白月黑羽教python之selenium:课后练习

    本博客记录了白月黑羽教python的selenium课后作业的代码,方便以后查看,希望可以帮助看到这篇博客的人,最后感谢白月黑羽老师的免费教程,讲的非常清楚! 目录 1.测试用例及代码 2.注意点 3 ...

  3. 白月黑羽教python之pytest:课后练习

    本博客记录了白月黑羽教python的pytest课后作业的代码,方便以后查看,希望可以帮助看到这篇博客的人,最后感谢白月黑羽老师的免费教程,讲的非常清楚! 目录 1.测试用例表 2.代码文件布局 3. ...

  4. 白月黑羽教python_其他 | 白月黑羽教Python

    都说Python执行效率不高,为什么还要学习它? 就像你买了一辆汽车,有人却说, 汽车开的比飞机慢多了,买什么汽车啊. 然而,生活中大部分的场合,用汽车比用飞机方便的多. 同样的道理通常你开发的程序( ...

  5. 白月黑羽教python excel_发布程序

    正式发布程序 前面,我们开发好了一个HTTP协议测试程序,但是这个程序是Python程序,运行它需要Python解释器. 如果我们要发布程序给客户使用,当然不能要求别人去安装Python解释器,并且敲 ...

  6. 白月黑羽教python excel_一个案例

    从一个示例开始 现在我们要开发一个程序,让用户输入一段文本包含:员工姓名.薪资.年龄. 格式如下: 薛蟠 4560 25 薛蝌 4460 25 薛宝钗 35776 23 薛宝琴 14346 18 王夫 ...

  7. 白月黑羽教python_白月黑羽Python在线教程

    推荐白月黑羽Python在线教程 白月黑羽 站在初学者的角度为大家安排了Python学习教程,帮助大家迅速掌握程序开发技能. http://www.python3.vip/doc/tutorial/p ...

  8. 白月黑羽python+selenium之SMS系统的练习

    笔记 练习用例的代码 # coding = utf-8 from selenium import webdriver import unittest import time from selenium ...

  9. 白月黑羽selenium自动化测试课后习题

    题目获取方式:http://www.python3.vip/prac/pub/info/bysms/ from selenium import webdriver import time wd = w ...

最新文章

  1. 7000 字读懂互联网公司的架构演变历程
  2. 英特尔也决定了!正式退出5G智能型手机
  3. MYSQL使用的时候遇到的一些问题
  4. pyhanlp 词性标注(正篇)
  5. PHP实现归治算法,PHP排序算法系列之归并排序详解
  6. 记录 之 一个小bug:Unsupported syntax ‘Starred‘
  7. Oracle 查看 对象 持有锁的情况
  8. 从零开始写项目第七篇【搭建Linux环境】
  9. shell基本运算符
  10. MySql随笔part3 表操作
  11. VMWARE 构建局域网 + VMWARE SQL Server 服务器搭建
  12. ftk学习记(waitbox篇)
  13. 【渝粤教育】电大中专建筑材料 (4)作业 题库
  14. 图片计算景深matlab程序,在线景深计算器
  15. 信道、频段带宽等术语简介
  16. concat函数_《MySQL 入门教程》第15篇MySQL常用函数之字符函数
  17. java tld tag_自定义标签tag(jsp编写)和tld(java编写)的使用方法
  18. 每天一篇论文 289/365Deep Reinforcement Learning for Robotic Pushing and Picking in Cluttered Environment
  19. 运满满服务器繁忙显示500,运满满上线两年多 听听货车司机怎么说
  20. Jmeter - if控制器

热门文章

  1. 阿里云服务器学生机购买教程最简单的方发(只需一步即可)
  2. mysql_slow_详解MySQL中SlowLog的实际配置
  3. springboot整合dubbo设置全局唯一ID进行日志追踪
  4. Golang学习系列第六天:操作MongoDB
  5. 通过机器学习的线性回归算法预测股票走势(用Python实现)
  6. linux的周期行计划任务叫做atd,linux基本命令之计划任务
  7. Java知识整理(Netty/索引/锁/JMM)-增强篇
  8. 机器学习D12——决策树
  9. Angular 实现树形菜单(多级菜单)功能模块
  10. CHIL-ORACLE-伪列