1. 程式人生 > 其它 >UI自動化框架實戰

UI自動化框架實戰

註冊頁面的基本測試:

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)