Selenium自动化初学-第四节:自动化测试模型

一、自动化测试模型分类

1、线性测试

每个线性脚本相对独立,不产生依赖与调用。即单纯的模拟用户完整的操作场景。

缺点:不易维护

2、模块化与类库

把重复的操作单独封装成公共模块,提高可维护性。

3、数据驱动测试

如在测试登陆,用户名密码数据不同,模块化无法解决这问题,所以数据驱动测试概念被提出。

4、关键字驱动测试

会把自动化操作封装为“关键字”,避免测试人员直接接触代码,多以“填表格”的形成降低脚本的编写难度。即可视化界面。

# 二、模块话与参数化
# driver.get('https://www.126.com/')
# element = driver.find_element(By.CSS_SELECTOR, '[id^=x-URS-iframe]')
# driver.switch_to.frame(element) # 切换到对应的子frame下(只能子frame,不能孙frame)
# user = driver.find_element(By.NAME, 'email')
# user.clear()
# user.send_keys("smile")
# pwd = driver.find_element(By.NAME, 'password')
# pwd.clear()
# pwd.send_keys("XINGFU")
# driver.find_element(By.ID, 'dologin').click()
# sleep(10)
# driver.find_element(By.ID, '_mail_icon_0_0').click()
# sleep(10)
# driver.find_element(By.XPATH, '/html/body/div[5]/div[5]/div[7]').click()
# 其余内容见test_mail.py和login_out.py

1、test_mail.py

# 二、模块化与数据化
# 调用Mail类中的登陆登出方法
# import codecs
# import csv
# import json
# from itertools import islice
# from os.path import abspath, dirname
# from time import sleep
# from xml.dom.minidom import parse
# from selenium import webdriver
# from selenium.webdriver.common.by import By
# from studyPython.sample.login_out import Mail
# options = webdriver.ChromeOptions()
# options.add_experimental_option('detach', True) # 不自动关闭浏览器
# driver = webdriver.Chrome(options=options)
# driver.get('https://www.126.com/')
# mail = Mail(driver)
# 1》单个
# mail.login()
# 2》多个
# mail.login('smile','XINGFU')
# 三、读取文件
# 1》txt数据文件
# element = driver.find_element(By.CSS_SELECTOR, '[id^=x-URS-iframe]') # 已经切换进去iframe了,循环的时候就不能在切换了,获取不到元素
# driver.switch_to.frame(element) # 切换到对应的子frame下(只能子frame,不能孙frame)
# # 读取文件
# path = dirname(abspath(__file__))
# with open(path + '/files/login.txt', 'r') as user_file:
# data = user_file.readlines()
# # 格式化处理
# print("len", len(data))
# for line in range(len(data)):
# user, pwd = data[line][:-1].split(":")
# mail.login(user, pwd)
# 2》CSV文件
# element = driver.find_element(By.CSS_SELECTOR, '[id^=x-URS-iframe]') # 已经切换进去iframe了,循环的时候就不能在切换了,获取不到元素
# driver.switch_to.frame(element) # 切换到对应的子frame下(只能子frame,不能孙frame)
# # 读取文件
# path=dirname(abspath(__file__))+'/files/csvStudy.csv' #导入CSV文件,需要下载CSV存放的插件,否则不能显示中文
# print(path)
# data=csv.reader(codecs.open(path,'r','utf_8_sig'))
# for line in islice(data,1,None):
# print(line)
# mail.login(line[0], line[1])
# 3>XML文件
# path = dirname(abspath(__file__)) + '/files/config.xml'
# print(path)
# # 打开文件
# dom = parse(path)
# # 得到元素对象
# root = dom.documentElement
# print("nodeName:", root.nodeName)
# names = root.getElementsByTagName('name')
# print(names[0].firstChild.data)
# print(names[1].firstChild.data)
# print(names[2].firstChild.data)
# logins = root.getElementsByTagName('login')
# uname_0 = logins[0].getAttribute('uname')
# print(uname_0)
# pwd_1 = logins[1].getAttribute('pwd')
# print(pwd_1)
# 4>json文件
# path = dirname(abspath(__file__)) + '/files/userinfo.json'
# with open(path, 'r') as userFile:
# data = userFile.read()
# print(data)
# userList = json.loads(data)
# print(userList)
# mail.logout()

2、login_out.py

#存放登陆和退出
from time import sleep

from selenium.webdriver.common.by import By

class Mail:

def __init__ (self,driver):
self.driver=driver

# 登陆-某一个用户
# def login(self):
# element = self.driver.find_element(By.CSS_SELECTOR, '[id^=x-URS-iframe]')
# self.driver.switch_to.frame(element) # 切换到对应的子frame下(只能子frame,不能孙frame)
# user = self.driver.find_element(By.NAME, 'email')
# user.clear()
# user.send_keys("smile")
# pwd = self.driver.find_element(By.NAME, 'password')
# pwd.clear()
# pwd.send_keys("XINGFU")
# self.driver.find_element(By.ID, 'dologin').click()
# sleep(10)
# self.driver.find_element(By.ID, '_mail_icon_0_0').click()

# 登陆-传参N个用户
# def login(self,uname,pwd):
# sleep(3)
# element = self.driver.find_element(By.CSS_SELECTOR, '[id^=x-URS-iframe]')
# self.driver.switch_to.frame(element) # 切换到对应的子frame下(只能子frame,不能孙frame)
# user = self.driver.find_element(By.NAME, 'email')
# user.clear()
# user.send_keys(uname)
# password = self.driver.find_element(By.NAME, 'password')
# password.clear()
# password.send_keys(pwd)
# self.driver.find_element(By.ID, 'dologin').click()

# 登陆-传txt文件用户
def login(self,uname,pwd):
sleep(3)
user = self.driver.find_element(By.NAME, 'email')
user.clear()
user.send_keys(uname)
password = self.driver.find_element(By.NAME, 'password')
password.clear()
password.send_keys(pwd)
self.driver.find_element(By.ID, 'dologin').click()

# 退出
def logout(self):
sleep(5)
self.driver.find_element(By.ID, '_mail_icon_0_0').click()
sleep(5)
self.driver.find_element(By.XPATH, '/html/body/div[5]/div[5]/div[7]').click()

3、项目结构

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值