PageObject unitetest框架的實現

2021-09-27 10:30:44 字數 3009 閱讀 4211

思想: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 ...