思想:ui層自動化測試前台頁面的改變導致整個測試**執行失敗,測試指令碼維護困難
解決辦法:將頁面元素和頁面元素的操作單獨封裝,實現頁面元素和頁面元素操作和指令碼的分離
框架的大致思路:
1.basepage
基礎頁面模組,封裝基礎的方法和頁面元素定位的方法
2.loginpage
登入模組,包括了登入要操作的所有元素,登入的元素方法的封裝
3.test_login
測試登入模組,引入了unittest模組,實現斷言操作,驗證登入的不同場景。
包括登入成功的場景,登入失敗的場景
basepage模組的**如下:
#coding=utf-8
from selenium import webdriver
class
page()
:def
__init__
(self,driver)
: self.driver=driver
defopen
(self)
: self.driver.get(
"")def
find_element
(self,
*loc)
:return self.driver.find_element(
*loc)
if __name__ ==
'__main__'
:pass
login_page模組的**如下:
#coding=utf-8
from basepage import page
from selenium.webdriver.common.by import by
class
loginpage
(page)
: username_loc=
(by.id,
'loginform_username'
) password_loc=
(by.id,
'loginform_password'
) submit_loc=
(by.id,
'submitloginbtn'
) null_password_loc=
(by.id,
'login-error-div'
) pass_loc=
(by.class_name,
'user-info'
)def
type_username
(self,username)
: self.find_element(
*self.username_loc)
.send_keys(username)
deftype_password
(self,password)
: self.find_element(
*self.password_loc)
.send_keys(password)
deftype_submit
(self)
: self.find_element(
*self.submit_loc)
.click(
)def
login_null_password
(self)
:return self.find_element(
*self.null_password_loc)
.text
deflogin_pass
(self)
:return self.find_element(
*self.pass_loc)
.text
deflogin_action
(self,username,password)
: po=loginpage(self.driver)
po.open()
po.type_username(username)
po.type_password(password)
po.type_submit(
)
test_login模組的**如下:
#coding=utf-8
from loginpage import
*from selenium import webdriver
import unittest
class
t(unittest.testcase)
:def
setup
(self)
: self.driver = webdriver.firefox(
)def
test_1
(self)
: po=loginpage(self.driver)
po.login_action(
'admin'
,' '
) self.assertequal(po.login_null_password(
),u'密碼 不可為空白. '
)def
test_2
(self)
: po=loginpage(self.driver)
po.login_action(
'admin'
,'123456'
) self.assertin(u'歡迎'
,po.login_pass())
defteardown
(self)
: self.driver.quit(
)if __name__ ==
'__main__'
: unittest.main(
)
Java 集合框架 Convenience 實現
本部分描述了一些小型實現,這些實現在您不需要它們的全部功能時,比一般用途的實現更方便 更高效。本節中的所有實現都是通過靜態工廠方法而不是公共類提供的。arrays.aslist方法返回陣列引數的列表檢視。對列表的更改將寫入到陣列,反之亦然。集合的大小是陣列的大小,不能更改。如果在列表上做新增或刪除,...
PYNQ移植實記 三 框架移植
by dnknow.恆 1 板級描述檔案準備 bit流檔案用於fpga配置,hdf檔案用於對已建立的soc系統進行描述。對於hdf檔案,在vivado sdk中描述為 其主要內容是已構建soc暫存器組的結構。以16進製制檢視分析可知,該檔案是對soc相關配置檔案的打包與描述 2 原始檔修改 如果沒有...
JavaScript拖拽框架與跨列拖放實現
column1 item1 column1 item2 some text here,so that the height is different column1 item3 column1 item4 column2 item1 column2 item2 column2 item3 some ...