UI自動化框架實戰
阿新 • • 發佈:2022-04-13
註冊頁面的基本測試:
page頁面:---registry.py
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')
regPasswd=(By.XPATH,'/html/body/div[2]/div/div/div/div/form[1]/div[2]/ul/li[2]/span/input')
passwordText=(By.XPATH,"/html/body/div[2]/div/div/div/div/form[1]/div[2]/ul/li[2]/div[1]/p/abbr")
numberPh=(By.XPATH,'/html/body/div[2]/div/div/div/div/form[1]/div[2]/ul/li[4]/span/input')
unmberText=(By.XPATH,'/html/body/div[2]/div/div/div/div/form[1]/div[2]/ul/li[4]/div[1]/p/abbr')
def clickLijiReg(self):
'''點選立即註冊'''
self.findElement(*self.liJiReg).click()
t.sleep(3)
def clickRegistry(self):
# 點選註冊
self.findElement(*self.registry).click()
t.sleep(3)
def inputEmailAddress(self,address):
self.findElement(*self.emailAddress).send_keys(address)
t.sleep(3)
self.clickLijiReg()
def inputEmailPasswd(self,password):
self.findElement(*self.regPasswd).send_keys(password)
t.sleep(3)
self.clickLijiReg()
def inputEmailnumberPh(self,number):
self.findElement(*self.numberPh).send_keys(number)
def getEmailValue(self):
return self.findElement(*self.numberPh).text
def getEmailnumberValue(self):
return self.findElement(*self.unmberText).text
def getPwdValue(self):
return self.findElement(*self.passwordText).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='asdzxc')
self.inputEmailAddress(address='')
def switchRegEmail(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='asdzxc')
self.inputEmailAddress(address='')
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.inputEmailAddress(addrss='asdzxc')
self.inputEmailPasswd(password='sdfsf')
def sinaReg(self,address,password,number):
self.inputEmailAddress(address=address)
self.inputEmailPasswd(password=password)
self.inputEmailnumberPh(number=number)
self.clickLijiReg()
test頁面---test_register.pfrom selenium import webdriver
import unittest
from page.login import Login
from page.registry import Registry
import time as t
from utils.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.switchReg()
self.assertEqual(self.getPwdValue(),readJson()["pwd"])
t.sleep(3)
def test_registry_email_address_null(self):
'''註冊:驗證郵箱地址為空密碼只有不足6位的提示資訊'''
self.switchReg()
self.sinaReg(address='',password='sdrg')
self.assertEqual(self.getPwdValue(),readJson()['passwdnull'])
t.sleep(3)
def test_registry_email_address_notChinese(self):
'''註冊:驗證郵箱地址是中文的錯誤提示資訊'''
self.switchReg()
self.sinaReg(address='風在吹雨在笑',password='')
self.assertEqual(self.getEmailValue(),readJson()['notChinese'])
t.sleep(3)
def test_registry_email_address_notcharacter(self):
'''註冊:驗證郵箱地址帶有全形字元的錯誤提示資訊'''
self.switchReg()
self.sinaReg(address='風在吹,雨在笑',password='')
self.assertEqual(self.getEmailValue(),readJson()['notcharacter'])
t.sleep(3)
def test_registry_email_unmber(self):
self.switchReg()
self.sinaReg(address='',password='',number='asdsds')
self.assertEqual(self.getEmailnumberValue(),readJson()['number'])
t.sleep(3)
data頁面:--sina.json
{
"null": "請輸入郵箱名",
"format": "您輸入的郵箱名格式不正確",
"error": "登入名或密碼錯誤",
"pwd":"請輸入密碼",
"passwdnull": "密碼的長度應該在6-16個字元之間",
"notChinese": "不能有中文",
"notcharacter": "不能有全形字元",
"number": "手機號碼輸入格式錯誤",
"CG": "您的郵件已傳送"
}
common裡面--public.py
import os
def base_dir():
return os.path.dirname(os.path.dirname(__file__))
utils裡面的---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())
作業:
page底下的send.py頁面:
from selenium.webdriver.common.by import By
from base.base import WebUI
import time as t
from selenium.webdriver.common.action_chains import ActionChains
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]')
aid=(By.XPATH,'/html/body/div[2]/div/div[4]/div[1]/div[3]/div[2]/ul/li[5]/a')
aidCenter=(By.XPATH,'//*[@id="right_nav_3"]')
unmessage=(By.XPATH,'//*[@id="unread_num_all"]')
integralchange=(By.XPATH,'//*[@id="showUserList"]/li[2]/a/span/b')
def clickWrite(self):
# 寫信按鈕
t.sleep(5)
self.findElement(*self.write).click()
def inputSendRen(self,content):
# 輸入收件人
t.sleep(3)
self.findElement(*self.sendRen).send_keys(content)
def inputSubject(self,content):
# 輸入主提
t.sleep(3)
self.findElement(*self.subject).send_keys(content)
# def inputEmailContent(self,content):
#
# # t.sleep(5)
# # # self.driver.switch_to.frame(0)
# # self.findElement(*self.emailContent).send_keys(content)
def clickAid(self):
self.findElement(*self.aid)
def clickAidCenter(self):
self.findElement(*self.aidCenter)
def clickSendEmail(self):
# 點擊發送按鈕
t.sleep(3)
self.findElement(*self.sendEmail).click()
def sendEmailSuccess(self,sendRen,subject):
self.clickWrite()
self.inputSendRen(content=sendRen)
self.inputSubject(content=subject)
self.clickSendEmail()
def getaid(self):
driver = self.driver
obj = ActionChains(driver=driver)
setting = driver.find_element_by_xpath('/html/body/div[2]/div/div[4]/div[1]/div[3]/div[2]/ul/li[5]/a')
# 懸浮框靜置
obj.move_to_element(setting).perform()
t.sleep(3)
driver.find_element_by_xpath('//*[@id="right_nav_3"]').click()
t.sleep(3)
def Unmessage(self):
t.sleep(3)
self.findElement(*self.unmessage).click()
def Integralchange(self):
t.sleep(3)
self.findElement(*self.integralchange).click()
def getSuccess(self):
return self.findElement(*self.success).text
test地下的test_send頁面
from selenium import webdriver
import unittest
from page.login import Login
from page.registry import Registry
import time as t
from utils.operationJson import readJson
from page.send import Send
from selenium.webdriver.common.action_chains import ActionChains
class SendTest(unittest.TestCase,Send,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_send_email(self):
# 測試傳送資訊的基本功能
t.sleep(5)
self.singLogin(username='[email protected]',password='admin123')
t.sleep(3)
self.sendEmailSuccess(sendRen='[email protected]',subject='自動化測試')
self.assertEqual(self.getSuccess(),readJson()['CG'])
t.sleep(3)
def test_aid(self):
# 測試懸浮裡面的幫助中心是否正常展示
t.sleep(5)
self.singLogin(username='[email protected]', password='admin123')
t.sleep(3)
self.getaid()
# print(self.driver.current_url)
self.assertTrue(self.driver.current_url.startswith('https://m0.mail.sina.com.cn/classic/'
'index.php#title'))
t.sleep(3)
def test_unmassage(self):
# 測試未讀郵件
t.sleep(3)
self.singLogin(username='[email protected]', password='admin123')
t.sleep(3)
self.Unmessage()
t.sleep(3)
# print(self.driver.current_url)
self.assertTrue(self.driver.current_url.startswith('https://m0.mail.sina.com.cn/classic/index.php#action=maillist&fid=all&title'))
t.sleep(3)
def test_integralchange(self):
# 測試積分換禮
t.sleep(3)
self.singLogin(username='[email protected]', password='admin123')
t.sleep(3)
self.Integralchange()
t.sleep(3)
# print(self.driver.current_url)
self.assertTrue(self.driver.current_url.startswith('https://m0.mail.sina.com.cn/classic/index.php#title'))
t.sleep(3)