selenium 自动化测试工具实战项目(客户)

介绍
复制代码
###### 测试的系统:白月黑羽网站的测试系统(白月SMS系统)
复制代码
###### 测试的功能:添加客户,编辑,删除等等
测试用例
用例编号 主模块 子模块 前置条件 测试步骤 预期结果 实际结果
Customer_01 客户 添加客户 已登录 1.不填写客户名,填写联系电话,地址。2.点击创建 创建不成功,并且有相应的提示 创建不成功,并且有相应的提示
Customer_02 客户 添加客户 已登录 1.填写客户名,不填写联系电话,填写地址。2.点击创建 创建不成功,并且有相应的提示 创建不成功,并且有相应的提示
Customer_03 客户 添加客户 已登录 1.填写客户名,填写联系电话,不填写地址。2.点击创建 创建不成功,并且有相应的提示 创建不成功,并且有相应的提示
Customer_04 客户 编辑 已登录,已创建客户 1.分别修改客户名,联系电话,地址。2.点击确定 能正常修改 能正常修改
Customer_05 客户 删除 已登录,已创建客户 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.common.exceptions import NoAlertPresentException

class Customer:

def init (self):

self.driver = webdriver.Chrome()

def OpenChrome(self):

self.driver.get('http://127.0.0.1/mgr/sign.html')

复制代码
  #前置条件
  def Login(self):
      #元素定位
      userNameElement = self.driver.find_element(By.ID,'username')
      userNameElement.send_keys('byhy')
      sleep(1)

      passWordElement = self.driver.find_element(By.ID,'password')
      passWordElement.send_keys('88888888')

      #点击登录按钮
      submitElement = self.driver.find_element(By.XPATH,'//div[@class="col-xs-12"]/button')
      submitElement.click()
      sleep(3)

      print('用户登录成功!!!')

  def  addCustomer(self):
      try:
          CustomerNameList = ['','zulniger','zulniger']
          PhoneList = ['17590967558','12','17590967558']
          AddressList = ['霍尔果斯','霍尔果斯','1']
          number = 0

          #点击客户
          CustomerElement=self.driver.find_element(By.XPATH,'//section/ul/li[2]/a')
          CustomerElement.click()
          sleep(1)
          while True:
              # 添加客户
              AddCustomerElement = self.driver.find_element(By.XPATH,'//section[@class="content container-fluid"]/div/button')
              AddCustomerElement.click()
              sleep(2)

              for n,p,a in zip(CustomerNameList,PhoneList,AddressList):
                  #输入客户名,联系电话,地址
                  #Customer_01
                  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(f'{n}')
                  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(f'{p}')
                  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(f'{a}')
                  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)

                  # Confirm 弹窗
                  try:
                      Confirm = self.driver.switch_to.alert
                      print('创建失败提示语  ------>  ', Confirm.text)
                      Confirm.accept()
                      sleep(3)

                  except NoAlertPresentException:
                      print("当前没有 alert,跳过处理")

                  continue


              break
      except Exception as e:
          print("Error:",e)

  def Redact(self):
      number = 1
      n=0
      while n<=3:
          #点击编辑
          redactElement = self.driver.find_element(By.XPATH,'//div[@class="search-result-item"][1]/div[4]/div/label[1]')
          redactElement.click()
          sleep(2)

          if number == 1:
              RCNElement=self.driver.find_element(By.XPATH,'//div[@class="search-result-item"]/div/div[1]/input[1]')
              RCNElement.send_keys(Keys.CONTROL+'a')
              RCNElement.send_keys('小明')
              sleep(3)

              # 点击确定
              subElement = self.driver.find_element(By.XPATH,'//div[@class="search-result-item"]/div[2]/div/label[1]')
              subElement.click()
              sleep(2)

          elif number == 2:
              RPElement = self.driver.find_element(By.XPATH,'//div[@class="search-result-item"]/div/div[2]/input')
              RPElement.send_keys(Keys.CONTROL+'a')
              RPElement.send_keys('13390987867')
              sleep(3)

              # 点击确定
              subElement = self.driver.find_element(By.XPATH,'//div[@class="search-result-item"]/div[2]/div/label[1]')
              subElement.click()
              sleep(2)

          else:
              RAElement = self.driver.find_element(By.XPATH,'//div[@class="search-result-item"]/div/div[3]/textarea')
              RAElement.send_keys(Keys.CONTROL+'a')
              RAElement.send_keys('伊宁市')
              sleep(3)

              # 点击确定
              subElement = self.driver.find_element(By.XPATH,'//div[@class="search-result-item"]/div[2]/div/label[1]')
              subElement.click()
              sleep(2)





          number = number+1
          n = n+1
          print('编辑完毕!!!')



  def delete(self):
      #删除客户
      DeleteElement = self.driver.find_element(By.XPATH,'//div[@class="search-result-item"][1]/div[4]/div/label[2]')
      DeleteElement.click()
      print('删除成功~')

if name == 'main ':

ct = Customer()

ct.OpenChrome()

ct.Login()

ct.addCustomer()

ct.Redact()

ct.delete()

复制代码
相关推荐
鸽芷咕8 分钟前
为什么越来越多开发者转向 CANN 仓库中的 Python 自动化方案?
python·microsoft·自动化·cann
大大大反派3 小时前
CANN 生态中的自动化部署引擎:深入 `mindx-sdk` 项目构建端到端 AI 应用
运维·人工智能·自动化
缺点内向4 小时前
C#: 告别繁琐!轻松移除Word文档中的文本与图片水印
c#·自动化·word·.net
机器视觉的发动机4 小时前
AI算力中心的能耗挑战与未来破局之路
开发语言·人工智能·自动化·视觉检测·机器视觉
0思必得05 小时前
[Web自动化] Selenium处理滚动条
前端·爬虫·python·selenium·自动化
芷栀夏5 小时前
CANN开源实战:基于DrissionPage构建企业级网页自动化与数据采集系统
运维·人工智能·开源·自动化·cann
鸽芷咕6 小时前
DrissionPage 成 CANN 仓库爆款自动化工具:背后原因何在?
运维·python·自动化·cann
池央6 小时前
CANN GE 深度解析:图编译器的核心优化策略、执行流调度与模型下沉技术原理
人工智能·ci/cd·自动化
深圳安锐科技有限公司7 小时前
斜拉桥、铁塔 4G 一体化索力计 工地快速加装方案怎么实施?
自动化·实时监测·自动化监测·桥梁监测·结构健康监测·索力计·索力监测仪
北京耐用通信8 小时前
破解AGV多协议互联难题:耐达讯自动化Profinet转Devicenet网关如何实现高效协同
人工智能·科技·物联网·网络协议·自动化·信息与通信