selenium 資料驅動框架自動化從0到1--3
selenium 資料驅動框架自動化從0到1–3
上一篇我們沒有把鏈路上的頁面封裝完,這篇繼續封裝,上一篇封裝後的程式碼如下:
#encoding = utf-8
from appModules.loginAction import *
from util.openBrowser import *
#建立chrome瀏覽器例項
driver = OpenBrowser()
lg = LoginAction()
lg.login(driver,'abc_123456qwe','abc_123456')
#獲取通訊錄按鈕單擊
getElement(driver,'xpath','//div[text()="通訊錄"]').click()
#獲取新建聯絡人按鈕單擊
sleep(3)
getElement(driver,'xpath','//span[text()="新建聯絡人"]').click()
#獲取姓名輸入框
sleep(3)
name = getElement(driver,'xpath',"//a[@title ='編輯詳細姓名']/preceding-sibling::div/input")
#輸入框輸入名字
name.send_keys('我是誰')
#獲取電子郵箱輸入框
sleep(3)
email = getElement(driver,'xpath','//div[@id="iaddress_MAIL_wrap"]//dd//div//input')
#電子郵箱輸入
email.send_keys('1322432@126.com')
#獲取是否是星標朋友單擊
sleep(3)
getElement(driver,'xpath','//span[text()="設為星標聯絡人"]/preceding-sibling::span/b').click()
#獲取電話號碼輸入框
sleep(3)
phon = getElement(driver,'xpath','//div[@id="iaddress_TEL_wrap"]//dd//div//input')
#輸入電話號碼
phon.send_keys('13523232323')
#獲取備註輸入框輸入備註
sleep(3)
common = getElement(driver,'xpath',"//textarea[@id='input_DETAIL']").send_keys('測試驗證')
#獲取確定按鈕單擊儲存
sleep(3)
buton = getElement(driver,'xpath','//span[text()="確 定"]').click()
#斷言我是誰是否新增成功
sleep(10)
assert u'我是誰' in driver.page_source
#退出瀏覽器
driver.quit()
二,封裝登陸後頁面元素程式碼
1,在pageObjects包下建立一個homePage.py 檔案,程式碼如下:
#encoding = utf-8
from util.getObjectMap import *
class HomePage(object):
def __init__(self,driver):
self.driver = driver
def addressBook(self):
try:
#獲取通訊錄按鈕元素物件
element = getElement(self.driver,'xpath','//div[text()="通訊錄"]')
return element
except Exception as e:
raise e
if __name__ =='__main__':
from util.openBrowser import *
from appModules.loginAction import LoginAction
driver = OpenBrowser() #建立瀏覽器例項
lg=LoginAction() #建立登入頁面例項
lg.login(driver,'abc_123456qwe','abc_123456') #登入
hg = HomePage(driver) #建立home 頁面例項
hg.addressBook().click() #點選通訊錄按鈕
driver.quit() #退出
三,封裝新增聯絡人頁面元素程式碼
1,在pageObjects包下建立一個addContactPersonPage.py 檔案,程式碼如下:
#encoding = utf-8
from util.getObjectMap import *
class AddContactPensonPage(object):
def __init__(self,driver):
self.driver = driver
def addContactPersonButton(self):
try:
#獲取新增聯絡人按鈕元素物件返回給呼叫者
element = getElement(self.driver,'xpath','//span[text()="新建聯絡人"]')
return element
except Exception as e:
raise e
def userName(self):
try:
#獲取新建聯絡人姓名元素物件返回給呼叫者
element = getElement(self.driver,'xpath','//a[@title="編輯詳細姓名"]/preceding-sibling::div/input')
return element
except Exception as e:
raise e
def userPersonEmail(self):
try:
#獲取新建聯絡人電子郵箱元素物件返回給呼叫者
element = getElement(self.driver,'xpath','//div[@id="iaddress_MAIL_wrap"]//dd/div//input')
return element
except Exception as e:
raise e
def isStar(self):
try:
#獲取是否是星標朋友的元素物件返回給呼叫者
element = getElement(self.driver,'xpath','//span[text()="設為星標聯絡人"]/preceding-sibling::span/b')
return element
except Exception as e:
raise e
def userPersonPhon(self):
try:
#獲取聯絡人手機號碼元素物件返回給呼叫者
element = getElement(self.driver,'xpath','//div[@id="iaddress_TEL_wrap"]//dd/div//input')
return element
except Exception as e:
raise e
def userPersonComment(self):
try:
#獲取備註元素物件返回給呼叫者
element = getElement(self.driver,'xpath','//textarea[@id="input_DETAIL"]')
return element
except Exception as e:
raise e
def saveButton(self):
try:
#獲取確定按鈕元素物件返回給呼叫者
element = getElement(self.driver,'xpath','//span[text()="確 定"]')
return element
except Exception as e:
raise e
if __name__ =='__main__':
from util.openBrowser import *
from appModules.loginAction import LoginAction
from pageObjects.homePage import *
from time import sleep
driver = OpenBrowser() #建立瀏覽器例項
lg = LoginAction() #建立登入頁面例項
lg.login(driver,'abc_123456qwe','abc_123456') #登入
hg = HomePage(driver) #建立home頁面例項
hg.addressBook().click() #點選通訊錄按鈕
cp=AddContactPensonPage(driver) #建立新增聯絡人頁面元素例項
cp.addContactPersonButton().click() #點選新增聯絡人按鈕
sleep(3)
cp.userName().send_keys('xinzeng') #姓名輸入
sleep(3)
cp.userPersonEmail().send_keys('14432@163.com') #電子郵箱輸入
cp.isStar().click() #點選星標按鈕
cp.userPersonPhon().send_keys('12345324323') #輸入電話
cp.userPersonComment().send_keys('gdgfghgfh') #輸入備註
cp.saveButton().click() #點選確定
sleep(3)
assert u'xinzeng' in driver.page_source #斷言xinzeng 是否新增完成
sleep(2)
driver.quit() #退出
2,在appModules包下建立一個addContactPersonAction.py 檔案,封裝新增聯絡人頁面程式碼如下
#encoding = utf-8
from pageObjects.addContactPersonPage import AddContactPensonPage
from pageObjects.homePage import HomePage
import traceback
import time
class AddContactPersonAction(object):
def __init__(self):
print('開始新增聯絡人')
@staticmethod
def addContactPerson(driver,userName,userEmail,isStar,userPhon,userComment):
try:
hp = HomePage(driver) #獲取home頁面元素的例項
hp.addressBook().click() #點選通訊錄按鈕
cp = AddContactPensonPage(driver) #獲取聯絡人頁面元素例項
cp.addContactPersonButton().click() #點選新增聯絡人按鈕
time.sleep(2)
if userName:
cp.userName().send_keys(userName) #輸入姓名
cp.userPersonEmail().send_keys(userEmail) #輸入email
if isStar =='y':
cp.isStar().click() #判斷是不是星標,是點選按鈕
if userPhon:
cp.userPersonPhon().send_keys(userPhon) #輸入電話
if userComment:
cp.userPersonComment().send_keys(userComment) #輸入備註
cp.saveButton().click() #點選提交
time.sleep(3)
assert userName in driver.page_source #斷言新增的聯絡人是否新增成功
driver.quit() #退出
except Exception as e:
print(traceback.print_exc()) #列印堆疊資訊
raise e
if __name__ =='__main__':
from util.openBrowser import *
from appModules.loginAction import *
driver = OpenBrowser() #例項化瀏覽器物件
lg = LoginAction() #例項化登入頁面物件
lg.login(driver,'abc_123456qwe','abc_123456') #登入
cp=AddContactPersonAction() #例項化新增聯絡人頁面
#新增聯絡人
cp.addContactPerson(driver,'sd','131243@163.com','y','12345345432','dsfds')
總結
於是乎,上一篇的程式碼就變成下面這樣了:
是不是乾淨利落了,但還是沒有把元素表示式,測試資料和程式碼分離,只是把相關模組封裝了一下(初步框架),這樣難於管理,如果開發稍微改動,我們就會花很多時間去修改維護,這不是我們想要的。下一篇我們先把頁面元素表示式和程式碼分離
#encoding = utf-8
from appModules.addContactPersonAction import AddContactPersonAction
from pageObjects.homePage import *
from appModules.loginAction import *
from util.openBrowser import *
#建立chrome瀏覽器例項
driver = OpenBrowser()
lg = LoginAction() #例項化登入頁面
lg.login(driver,'abc_123456qwe','abc_123456') #登入
hp =HomePage(driver) #例項化home頁面元素
hp.addressBook().click() #點選通訊錄按鈕
cp = AddContactPersonAction() #例項化新增聯絡人頁面
cp.addContactPerson(driver,'qerrw','1323233@163.com','n','13423232323','gdgd') #新增聯絡人
#退出瀏覽器
driver.quit()
相關文章
- titans Selenium 自動化框架框架
- Selenium–資料驅動(python)Python
- 自動化測試框架Selenium的使用——安裝Selenium框架
- 基於Selenium + Python的web自動化框架PythonWeb框架
- 基於Python的介面自動化-unittest測試框架和ddt資料驅動Python框架
- selenium自動化操作
- Selenium自動化實現web自動化-1Web
- 求助帖:JMeter 介面自動化測試——資料驅動JMeter
- selenium自動化測試
- selenium自動化測試框架之PO設計模式框架設計模式
- Python Selenium自動化測試框架 元素等待機制Python框架
- Selenium Web Driver自動化測試(java版)系列下半部分(37) - 關鍵字驅動自動化測試框架(2)-測試過程...WebJava框架
- fasttest-selenium 關鍵字驅動自動化工具AST
- 如何理解自動化測試資料驅動與關鍵字驅動的區別?
- 學會Python+Selenium,分分鐘搭建Web自動化框架!PythonWeb框架
- pytest+selenium+allure web端UI自動化框架設計WebUI框架
- 基於Selenium+Python的web自動化測試框架PythonWeb框架
- Selenium用法詳解 -- Selenium3 自動化測試入門到精通
- 如何快速從 0 到 1 構建起一個公司的自動化介面
- 從0到1學習介面自動化測試必備知識!
- 測開新手:從0到1,自動化測試接入Jenkins學習Jenkins
- Selenium自動化測試(3)
- 如何從0開始做自動化測試?
- 專磕自動化營銷,資料驅動讓生意更有溫度
- web自動化測試框架-05 建立資料驅動的測試用例,Doc String與Data TableWeb框架
- 從0到1,滴滴DB自動化運維是這樣實踐的運維
- Selenium用法詳解 - - selenium自動化測試概要
- 自動化測試如此容易!多語言自動化測試框架 Selenium 程式設計(C#篇)框架程式設計C#
- 從理論到工具:帶你全面瞭解自動化測試框架框架
- python3 使用 Selenium 自動化測試或爬取資料Python
- Selenium自動化測試網頁網頁
- selenium+python自動化測試Python
- java+selenium 自動化測試Java
- 不需要驅動的自動化
- 5 步輕鬆上手,教你從 0 到 1 落地 Jmeter 介面自動化指令碼!JMeter指令碼
- PO模式在selenium自動化測試框架有什麼好處模式框架
- 【自動化測試入門】用Airtest - Selenium對Firefox進行自動化測試(0基礎也能學會)AIFirefox
- 新字元驅動框架驅動LED字元框架