news 2026/8/27 7:42:56

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/8/24 4:06:11

Linux tar命令深度解析:从根目录到子目录的打包策略与实战技巧

1. tar命令基础&#xff1a;从归档工具到压缩能手 第一次接触Linux系统时&#xff0c;我被各种命令行工具搞得晕头转向。记得有次需要备份项目代码&#xff0c;同事说"用tar打个包就行"&#xff0c;我愣是研究了半小时才搞明白这个神奇的工具。现在回想起来&#xf…

作者头像 李华
网站建设 2026/8/24 11:03:03

深入解析ESP32-PICO-D4最小系统设计:从原理图到启动模式配置

1. ESP32-PICO-D4模组概览 ESP32-PICO-D4是乐鑫科技推出的一款高度集成的系统级封装&#xff08;SiP&#xff09;模组&#xff0c;它把ESP32芯片、4MB SPI Flash、40MHz晶振、射频匹配电路等关键部件全部封装在一个仅有7mm7mm0.94mm的微型LGA封装内。这种设计让开发者无需额外…

作者头像 李华
网站建设 2026/8/19 9:07:29

OLLAMA部署LFM2.5-1.2B-Thinking:1GB内存极限优化与移动NPU 82tok/s实测分享

OLLAMA部署LFM2.5-1.2B-Thinking&#xff1a;1GB内存极限优化与移动NPU 82tok/s实测分享 1. 为什么这款1.2B模型值得你立刻试试&#xff1f; 你有没有试过在一台只有1GB可用内存的老旧笔记本上跑大模型&#xff1f;或者在通勤路上用手机打开一个真正能思考的AI助手&#xff1…

作者头像 李华
网站建设 2026/8/25 4:16:28

数据结构 -哈希表

小结 哈希表作为一种数据结构&#xff0c;主要用来查找一个元素是否在集合中出现过&#xff0c;常用的哈希结构有数组、set、map。双指针法是可以更好的解决三数四数之和的问题&#xff0c;通过不断的收敛&#xff0c;找到对应的组合列表。

作者头像 李华