news 2026/2/12 23:26:53

selenium 自动化测试工具实战项目(订单)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
selenium 自动化测试工具实战项目(订单)
温馨提示:读本章之前,基础薄弱的伙伴,先学完【自动化测试之selenium】这篇文章,才能够轻松的学完本文章。
  • 介绍
    • 测试的系统:白月黑羽网站的测试系统(白月SMS系统)
    • 测试的功能:添加药品,删除等等
  • 测试用例
    用例编号主模板子模板前置条件测试步骤预期结果实际结果
    Order_01订单添加订单已创建客户和药品1.点击添加订单按钮,不填写订单名称,填写客户和药品。2.点击创建添加不成功,有相关的提示信息添加不成功,有相关的提示信息
    Order_02订单添加订单已创建客户和药品1.点击添加订单按钮,填写订单名称,不填写客户和填写药品。2.点击创建添加不成功,有相关的提示信息添加不成功,有相关的提示信息
    Order_03订单添加订单已创建客户和药品1.点击添加订单按钮,填写订单名称,填写客户和不填写药品。2.点击创建添加成功添加成功
    Order_04订单删除订单已创建订单1.点击删除按钮,删除订单删除成功删除成功
  • 自动化测试程序
    fromseleniumimportwebdriverfromtimeimportsleep

from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoAlertPresentException, TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class OrderTest:
definit(self):
self.driver = webdriver.Chrome()

# 前置条件 def Login(self,username,password): self.driver.get('http://127.0.0.1/mgr/sign.html') usernameElement = self.driver.find_element(By.ID, 'username') usernameElement.send_keys(username) sleep(2) passwordElement = self.driver.find_element(By.ID, 'password') passwordElement.send_keys(password) sleep(2) # 点击登录 submitElement = self.driver.find_element(By.XPATH, "//div[@class='col-xs-12']/button") submitElement.click() sleep(2) print('登录成功~') def addCustomer(self,name,phone,address): #点击客户 CustomerElement = self.driver.find_element(By.XPATH,'//section[@class="sidebar"]//ul[@class="sidebar-menu tree"]/li[2]/a') CustomerElement.click() sleep(2) #添加客户 AddCustomerElement = self.driver.find_element(By.XPATH,'//section[@class="content container-fluid"]/div/button') AddCustomerElement.click() sleep(2) #定位元素 CustomerNameElement = self.driver.find_element(By.XPATH,'//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[1]/input') CustomerNameElement.send_keys(Keys.CONTROL + 'a') CustomerNameElement.send_keys(name) sleep(2) PhoneElement = self.driver.find_element(By.XPATH, '//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[2]/input') PhoneElement.send_keys(Keys.CONTROL + 'a') PhoneElement.send_keys(phone) sleep(2) AddressElement = self.driver.find_element(By.XPATH, '//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[3]/textarea') AddressElement.send_keys(Keys.CONTROL + 'a') AddressElement.send_keys(address) sleep(2) # 点击创建 createElement = self.driver.find_element(By.XPATH, '//div[@class="col-lg-12 col-md-12 col-sm-12"]/button[1]') createElement.click() sleep(2) def addDrug(self,drugName,number,describe): #点击药品 drugElement = self.driver.find_element(By.XPATH,'//section[@class="sidebar"]//ul[@class="sidebar-menu tree"]/li[3]/a') drugElement.click() sleep(2) #添加药品 addDrugElement = self.driver.find_element(By.XPATH,'//div[@class="col-lg-12 col-md-12 col-sm-12 add-one-area"]/button') addDrugElement.click() sleep(2) #定位元素 drugNameElement = self.driver.find_element(By.XPATH,'//section[@class="content container-fluid"]//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[1]/input') drugNameElement.send_keys(drugName) sleep(2) numberElement = self.driver.find_element(By.XPATH,'//section[@class="content container-fluid"]//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[2]/input') numberElement.send_keys(number) sleep(2) describeElement = self.driver.find_element(By.XPATH,'//section[@class="content container-fluid"]//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[3]/textarea') describeElement.send_keys(describe) sleep(2) #点击创建 createElement = self.driver.find_element(By.XPATH,'//div[@class="col-lg-12 col-md-12 col-sm-12"]/button[1]') createElement.click() sleep(2) def AddOrderTest(self): OrderName = [' ', '艾莉', 'zulnger'] Coption = ['A','B','C'] Doption = ['E','F','G'] #点击订单 OrderElement = self.driver.find_element(By.XPATH,'//section[@class="sidebar"]//ul[@class="sidebar-menu tree"]/li[4]/a') OrderElement.click() sleep(2) number = 1 while number <= 3: #点击添加订单 addOrderElement = self.driver.find_element(By.XPATH,'//div[@class="col-lg-12 col-md-12 col-sm-12 add-one-area"]/button') addOrderElement.click() sleep(2) for n,c,d in zip(OrderName,Coption,Doption): #Order_01 #订单名称 OrderNameElement = self.driver.find_element(By.XPATH,'//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[1]/input') OrderNameElement.send_keys(Keys.CONTROL+'a') OrderNameElement.send_keys(n) sleep(2) #客户 #下拉框 #创建slect对象 if c == 'A': select = Select(self.driver.find_element(By.XPATH,'//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[2]/select')) select.select_by_index(0) sleep(2) elif c == 'B': pass elif c == 'C': select = Select(self.driver.find_element(By.XPATH, '//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[2]/select')) select.select_by_index(0) sleep(2) else: print('出大错了-……-') #药品 if d == 'E': select = Select(self.driver.find_element(By.XPATH,'//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[3]/select')) select.select_by_index(0) sleep(2) elif d == 'F': select = Select(self.driver.find_element(By.XPATH, '//div[@class="col-lg-8 col-md-8 col-sm-8"]/div[3]/select')) select.select_by_index(0) sleep(2) elif d == 'G': pass else: print('出大错了-……-') #点击创建 createElement = self.driver.find_element(By.XPATH,'//div[@class="col-lg-12 col-md-12 col-sm-12"]/button[1]') createElement.click() try: # 等待 alert 出现(最多等3秒) WebDriverWait(self.driver, 3).until(EC.alert_is_present()) # 切换到 alert 并点击确定(accept) alert = self.driver.switch_to.alert alert.accept() # 点击确定 sleep(2) # alert.dismiss() # 如果想点取消用这个 print("检测到弹窗,已点击确定") except (NoAlertPresentException, TimeoutException): # 没有弹窗,正常跳过 print("没有检测到弹窗,继续执行") pass continue number = number+1 def Delete(self): #点击删除按钮 deleteElement = self.driver.find_element(By.XPATH,"//div[@class='search-result-item'][1]/div[5]/div/label") deleteElement.click() sleep(2) #创建对象 alert = self.driver.switch_to.alert text = alert.text alert.accept() print("提示语:",text) print('删除成功!!!!')

ifname==‘main’:
ot = OrderTest()
ot.Login(‘byhy’,‘88888888’)
ot.addCustomer(‘zulniger’,‘17590967558’,‘伊犁’)
ot.addDrug(‘消食片’,‘20’,‘很有效’)
ot.AddOrderTest()
ot.Delete()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 20:23:27

芯片IO的进化论:从电平转换到智能接口的范式迁移

芯片IO的进化论&#xff1a;从电平转换到智能接口的范式迁移 1. 芯片IO电路的技术演进脉络 在半导体技术发展的早期阶段&#xff0c;IO电路的核心使命简单而明确——完成芯片内部与外部世界的电平转换。如同翻译官连接两种语言&#xff0c;早期的推挽输出、开漏输出结构解决了…

作者头像 李华
网站建设 2026/2/12 22:35:59

从零构建:J-Link RTT在资源受限MCU上的轻量化实践

从零构建&#xff1a;J-Link RTT在资源受限MCU上的轻量化实践 当你在调试一块只有32KB RAM的Cortex-M0芯片时&#xff0c;传统调试手段往往显得力不从心。串口调试需要占用宝贵的硬件资源&#xff0c;SWO调试对引脚有特殊要求&#xff0c;而普通的J-Link RTT实现又可能吃掉你10…

作者头像 李华
网站建设 2026/2/6 18:02:35

Lychee-Rerank-MM实战教程:Postman集合测试+自动化回归验证脚本

Lychee-Rerank-MM实战教程&#xff1a;Postman集合测试自动化回归验证脚本 1. 什么是Lychee多模态重排序模型&#xff1f; 你有没有遇到过这样的问题&#xff1a;图文检索系统初筛出一堆结果&#xff0c;但排在最前面的却不是最相关的&#xff1f;传统双塔模型做粗排效率高&a…

作者头像 李华
网站建设 2026/2/9 22:25:06

新手友好!基于科哥镜像搭建语音情感识别WebUI全过程

新手友好&#xff01;基于科哥镜像搭建语音情感识别WebUI全过程 1. 为什么你需要这个语音情感识别系统&#xff1f; 你有没有遇到过这些场景&#xff1a; 客服团队想快速知道客户电话里的情绪倾向&#xff0c;但人工听几百通录音太耗时&#xff1b;在线教育平台想分析学生回…

作者头像 李华
网站建设 2026/2/12 3:47:10

ncm格式解放完全指南:音乐收藏自由与跨设备管理新方案

ncm格式解放完全指南&#xff1a;音乐收藏自由与跨设备管理新方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 作为音乐爱好者&#xff0c;你是否也曾遇到这样的困扰&#xff1a;精心收藏的网易云音乐歌曲只能在特定APP中播放&am…

作者头像 李华
网站建设 2026/2/10 14:51:29

从零构建:CubeMX工程文件夹的模块化设计与实战优化

CubeMX工程模块化重构&#xff1a;从工业级规范到物联网设备优化实战 嵌入式开发中&#xff0c;CubeMX生成的默认工程结构往往难以满足复杂项目的需求。本文将深入探讨如何对CubeMX工程进行模块化重构&#xff0c;打造既符合工业级规范又适应物联网终端设备特性的工程架构。 …

作者头像 李华