news 2026/6/15 18:13:05

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/6/15 11:21:24

Page Assist 2.0:重新定义浏览器本地AI交互体验

Page Assist 2.0&#xff1a;重新定义浏览器本地AI交互体验 【免费下载链接】page-assist Use your locally running AI models to assist you in your web browsing 项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist 1 核心价值&#xff1a;如何让本地AI…

作者头像 李华
网站建设 2026/6/15 11:21:16

ChatTTS实战:Internal Server Error排查与优化指南

ChatTTS实战&#xff1a;Internal Server Error排查与优化指南 摘要&#xff1a;本文针对ChatTTS服务中常见的Internal Server Error问题&#xff0c;从实战角度出发&#xff0c;深入分析错误根源&#xff0c;提供系统化的排查思路与优化方案。你将学习到如何通过日志分析、性能…

作者头像 李华
网站建设 2026/6/15 11:19:18

H264编码原理与实战应用解析

1. H264编码技术入门指南 第一次接触H264编码时&#xff0c;我被它的压缩效率震惊了。想象一下&#xff0c;一段100MB的原始YUV视频数据&#xff0c;经过H264编码后可以压缩到仅1MB左右。这种近乎"魔术"般的压缩效果&#xff0c;背后是一系列精妙的算法在发挥作用。…

作者头像 李华
网站建设 2026/6/15 13:25:01

Jimeng AI Studio Z-Image底座迁移指南:将现有SD模型无缝接入Studio框架

Jimeng AI Studio Z-Image底座迁移指南&#xff1a;将现有SD模型无缝接入Studio框架 1. 为什么需要迁移&#xff1f;——从“能跑”到“跑得美、跑得稳、跑得快” 你手头可能已经有一批训练好的 Stable Diffusion 模型&#xff1a;也许是微调过的写实人像 LoRA&#xff0c;也…

作者头像 李华
网站建设 2026/6/15 15:19:24

Clawdbot+Qwen3-32B企业级Java开发实战:SpringBoot微服务集成指南

ClawdbotQwen3-32B企业级Java开发实战&#xff1a;SpringBoot微服务集成指南 1. 引言 在当今企业应用开发中&#xff0c;AI能力的集成已成为提升业务智能化水平的关键。本文将带你从零开始&#xff0c;在SpringBoot微服务架构中集成Clawdbot和Qwen3-32B大模型&#xff0c;构建…

作者头像 李华
网站建设 2026/6/15 11:21:41

从零到一:51单片机如何重塑传统微波炉的智能控制逻辑

从零到一&#xff1a;51单片机如何重塑传统微波炉的智能控制逻辑 厨房里的微波炉已经陪伴我们走过了半个多世纪&#xff0c;但它的核心控制逻辑却始终停留在机械旋钮和简单定时器的时代。直到有一天&#xff0c;我在实验室里用一块不到10元的51单片机&#xff0c;让这台老古董…

作者头像 李华