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

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

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:

def init (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('删除成功!!!!')

if name =='main ':

ot = OrderTest()

ot.Login('byhy','88888888')

ot.addCustomer('zulniger','17590967558','伊犁')

ot.addDrug('消食片','20','很有效')

ot.AddOrderTest()

ot.Delete()

复制代码
相关推荐
daopuyun5 小时前
技术最前沿|最新版软件安全测试工具Fortify 安全规则库26.1更新内容
测试工具·安全
AC赳赳老秦6 小时前
DeepSeek优化多智能体指令:避免协同冲突,提升自动化流程稳定性
android·大数据·运维·人工智能·自然语言处理·自动化·deepseek
北京耐用通信6 小时前
耐达讯自动化CC-Link IE转DeviceNet网关:破解三菱与欧姆龙PLC协同壁垒的工业实践
人工智能·科技·物联网·网络协议·自动化
整列机厂家-唯思特9 小时前
咖啡机出水管多零件自动化组装工艺解析
自动化·制造
RPA机器人就用八爪鱼9 小时前
RPA+AI融合趋势下,数字化内容运营的自动化升级路径
机器人·自动化·rpa
GAOJ_K11 小时前
滚柱导轨安装后如精度偏差对机械设备有影响吗?
运维·人工智能·科技·自动化·制造
爱学习的小囧12 小时前
零门槛!VCF 自动化环境登录 vSphere Supervisor 全教程
运维·服务器·算法·自动化·vmware·虚拟化
007张三丰12 小时前
软件测试专栏(7/20):接口测试全攻略:Postman+Newman实现API自动化
自动化·lua·接口测试·postman·api测试·newman
沃和莱特12 小时前
Copy as fetch + Skill:自动化问题记录分析的实践与思考
运维·ai·自动化·编程·skills
赛博云推-Twitter热门霸屏工具12 小时前
从手动运营到自动化增长:赛博云推让Twitter推广效率提升10倍
运维·自动化·twitter