WEB自动化测试(六)
公共方法
在common包下创建public.py的模块,里面主要编写针对文件路径的处理,具体源码如下:
import os
def base_dir():
return os.path.dirname(os.path.dirname(__file__))
数据驱动
下来在data的文件夹下创建sina.json的文件,把登录使用到的数据分离到sina.json的文件里面,该文件
的具体内容为:
{
"null":"请输入邮箱名",
"format":"您输入的邮箱名格式不正确",
"error":"请输入正确的新浪邮箱帐号和密码",
"null1": "请输入密码",
"letter": "手机号码输入格式错误",
"success": "您的邮件已发送",
"shu": "35",
"name": "test"
}
工具类
下来在具体的工具类中编写针对JSON文件的处理,创建的模块名称为:operationJson.py,具体源码为:
import json
import os
from common.public import base_dir
def readJson():
return json.load(open(file=os.path.join(base_dir(),'data','sina.json'),encoding='utf-8'))
# print(readJson())
练习自动化测试
新浪邮箱注册测试:
一、创建对象层
from selenium.webdriver.common.by import By
from base.base import WebUI
import time as t
class Registry(WebUI):
registry=(By.LINK_TEXT,'注册')
emailAddress=(By.XPATH,'/html/body/div[2]/div/div/div/div/form[1]/div[2]/ul/li[1]/span/input')
liJiReg=(By.XPATH,'/html/body/div[2]/div/div/div/div/form[1]/div[3]/ul/li/div/div/a')
emailNull=(By.XPATH,'/html/body/div[2]/div/div/div/div/form[1]/div[2]/ul/li[1]/div[3]/p/abbr')
passwd=(By.XPATH,'/html/body/div[2]/div/div/div/div/form[1]/div[2]/ul/li[2]/span/input')
emailNull2=(By.XPATH,'/html/body/div[2]/div/div/div/div/form[1]/div[2]/ul/li[2]/div[1]/p')
phoneNumber=(By.XPATH,'/html/body/div[2]/div/div/div/div/form[1]/div[2]/ul/li[4]/span/input')
emilNull3=(By.XPATH,'/html/body/div[2]/div/div/div/div/form[1]/div[2]/ul/li[4]/div[1]/p')
def clickRegistry(self):
'''点击注册'''
self.findElement(*self.registry).click()
t.sleep(3)
def clickLijiReg(self):
'''点击立即注册'''
self.findElement(*self.liJiReg).click()
t.sleep(3)
def inputphoneNumber(self,number):
self.findElement(*self. phoneNumber).send_keys(number)
t.sleep(3)
self.clickLijiReg()
def inputEmailAddress(self,addrss):
self.findElement(*self.emailAddress).send_keys(addrss)
t.sleep(3)
self.clickLijiReg()
def inputPasswd(self,password):
self.findElement(*self.passwd).send_keys(password)
t.sleep(3)
self.clickLijiReg()
def getEmailValue(self):
return self.findElement(*self.emailNull).text
def getEmailValue2(self):
return self.findElement(*self.emailNull2).text
def getEmailValue3(self):
return self.findElement(*self.emilNull3).text
def switchReg(self):
'''切换到注册页面'''
nowHandler=self.driver.current_window_handle
self.clickRegistry()
allHandlers=self.driver.window_handles
for handler in allHandlers:
if handler!=nowHandler:
self.driver.switch_to.window(handler)
self.inputEmailAddress(addrss='')
def switchRegPasswd(self):
'''切换到注册页面测试密码'''
nowHandler=self.driver.current_window_handle
self.clickRegistry()
allHandlers=self.driver.window_handles
for handler in allHandlers:
if handler!=nowHandler:
self.driver.switch_to.window(handler)
self.inputPasswd(password='')
def switchRegNumber(self):
'''切换到注册页面测试手机号码'''
nowHandler=self.driver.current_window_handle
self.clickRegistry()
allHandlers=self.driver.window_handles
for handler in allHandlers:
if handler!=nowHandler:
self.driver.switch_to.window(handler)
self.inputphoneNumber(number='qwert')
二、创立测试层
from selenium import webdriver
import unittest
from page.login import Login
from page.registry import Registry
import time as t
from utlis.operationJson import readJson
class RegistryTest(unittest.TestCase,Registry,Login):
def setUp(self) -> None:
self.driver=webdriver.Chrome()
self.driver.maximize_window()
self.driver.get('https://mail.sina.com.cn/')
self.driver.implicitly_wait(30)
def tearDown(self) -> None:
self.driver.quit()
def test_registry_email_address(self):
'''注册:邮箱地址为空的验证'''
self.switchReg()
self.assertEqual(self.getEmailValue(),readJson()['null'])
t.sleep(3)
def test_registry_email_passwd(self):
'''注册:密码为空的验证'''
self.switchRegPasswd()
self.assertEqual(self.getEmailValue2(),readJson()['null1'])
t.sleep(3)
def test_registry_email_number(self):
'''注册:手机号码为字母'''
self.switchRegNumber()
self.assertEqual(self.getEmailValue3(),readJson()['letter'])
t.sleep(3)
练习自动化测试二
新浪邮箱发送邮件测试:
对象层
from selenium.webdriver.common.by import By
from base.base import WebUI
import time as t
from selenium import webdriver
class Send(WebUI):
write=(By.XPATH,'/html/body/div[2]/div/div[5]/div[2]/div[1]/div[1]/div[1]/ul/li[1]/a')
sendRen=(By.XPATH,'/html/body/div[2]/div/div[5]/div[2]/div[2]/div[2]/div[1]/div/div[1]/div[2]/form/div/table/tbody/tr[2]/td/ul/li/input')
subject=(By.XPATH,'/html/body/div[2]/div/div[5]/div[2]/div[2]/div[2]/div[1]/div/div[1]/div[2]/form/div/table/tbody/tr[6]/td/input')
emailContent=(By.XPATH,'/html/body/text()')
sendEmail=(By.XPATH,'/html/body/div[2]/div/div[5]/div[2]/div[2]/div[2]/div[1]/div/div[1]/div[1]/span/span[1]/a/i[2]')
success=(By.XPATH,'/html/body/div[2]/div/div[5]/div[2]/div[2]/div[2]/div[1]/div[2]/div[2]/div[1]/div[1]/div/p[1]')
success2=(By.XPATH,'/html/body/div[2]/div/div[5]/div[2]/div[2]/div/div[2]/div[1]/div/div[1]/div[2]/div[2]/ul/li[1]/a/span/b/i[1]')
success3=(By.XPATH,'/html/body/div[2]/div/div[5]/div[2]/div[2]/div[1]/div[2]/div[1]/div/div[1]/div[2]/div[1]/span[1]/em/span')
help=(By.XPATH,'/html/body/div[2]/div/div[12]/ul/li[1]/a')
name = (By.XPATH, '/html/body/form/div/div/input[1]')
def inputName(self, name2):
self.findElement(*self.name).send_keys(name2)
t.sleep(3)
def clickWrite(self):
t.sleep(3)
self.findElement(*self.write).click()
def inputSendRen(self,Ren):
'''收件人'''
self.findElement(*self.sendRen).send_keys(Ren)
t.sleep(3)
def inputSubject(self,ject):
'''主题'''
self.findElement(*self.subject).send_keys(ject)
t.sleep(3)
def clickSendEmail(self):
'''点击发送'''
self.findElement(*self.sendEmail).click()
def sendEmaiSuccess(self,sendPerson,subject):
'''发送邮件'''
self.clickWrite()
self.inputSendRen(Ren=sendPerson)
self.inputSubject(ject=subject)
self.clickSendEmail()
def clickHelp(self):
self.findElement(*self.help).click()
t.sleep(3)
def getSuccess(self):
return self.findElement(*self.success).text
def getSuccess2(self):
return self.findElement(*self.success2).text
def getSuccess3(self):
return self.findElement(*self.success3).text
测试层
from selenium import webdriver
import unittest
from page.login import Login
from page.send import Send
import time as t
from utlis.operationJson import readJson
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
class SendTest(unittest.TestCase,Login,Send):
def setUp(self) -> None:
self.driver=webdriver.Chrome()
self.driver.maximize_window()
self.driver.get('https://mail.sina.com.cn/#')
self.driver.implicitly_wait(30)
def tearDown(self) -> None:
self.driver.quit()
def test_send_email(self):
'''发送邮件'''
self.singLogin(username='wuya1303@sina.com',password='admin123')
self.sendEmaiSuccess(sendPerson='986435233@qq.com',subject='自动化测试')
self.assertEqual(self.getSuccess(),readJson()['success'])
def test_Unread_email(self):
'''未读邮件'''
self.singLogin(username='wuya1303@sina.com', password='admin123')
self.assertEqual(self.getSuccess2(),readJson()['shu'])
def test_email_name(self):
'''名称'''
self.singLogin(username='wuya1303@sina.com', password='admin123')
self.assertEqual(self.getSuccess3(),readJson()['name'])
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架