Selenium 自動化測試模型

2022-07-10 02:36:15 字數 4145 閱讀 5522

自動化測試模型可以看作自動化測試框架與工具設計的思想。

線性指令碼中每個指令碼都相互獨立,且不會產生其他依賴與呼叫,其實就是簡單模擬使用者某個操作流程產生的指令碼。

from  selenium import

webdriver

from time import

sleep

driver=webdriver.chrome()

driver.get(

"")#根據id=kw定位元素,並輸入python

driver.find_element_by_id("

kw").send_keys("

python")

sleep(1)

#清除輸入框內容

driver.find_element_by_id("kw"

).clear()

sleep(1)

#根據name=kw定位元素,並輸入python

driver.find_element_by_name("

wd").send_keys("

python")

sleep(2)

#根據id=su定位元素,並點選

driver.find_element_by_id("su"

).click()

sleep(3)

driver.quit()

線性模型雖然每個用例都可以拿出來獨立執行,但是用例之間重複**很多,開發、維護成本高。其實把重複的操作**封裝為獨立的公共模組,當用例執行時需要用到這部分,直接呼叫即可,這就是模組驅動的方式。比如登入系統、退出登入、截圖函式等等。

from selenium import

webdriver

from time import

sleep

class

login():

defuser_login(self,driver):

driver.find_element_by_link_text(

'賬號密碼登入

').click()

driver.find_element_by_name(

'all

').clear()

driver.find_element_by_name(

'all

').send_keys('

51zxw')

driver.find_element_by_name(

'pwd

').clear()

driver.find_element_by_name(

'pwd

').send_keys('

123456')

driver.find_element_by_class_name(

'btn-primary

').click()

defuser_logout(self,driver):

driver.find_element_by_link_text('退出

').click()

sleep(2)

driver.switch_to_alert().accept()

if__name__=='

__main__':

driver =webdriver.chrome()

driver.get(

"")driver.implicitly_wait(10)

login().user_login(driver)

login().user_logout(driver)

模組驅動的模型雖然解決了指令碼的重複問題,但是需要測試不同資料的用例時,模組驅動的方式就不很適合了。

介面自動化中測試用例和指令碼的分離、測試不同的賬號執**況、操作的流程相同但是資料不同等等這些用資料驅動吧。

資料驅動就是資料的改變從而驅動自動化測試的執行,最終引起測試結果的改變。

裝載資料的方式可以是列表、字典或是外部檔案(txt、csv、xml、excel),目的就是實現資料和指令碼的分離。

from selenium import webdriver

from time import sleep

class login():

def user_login(self,driver,name,pwd):

driver.find_element_by_link_text('賬號密碼登入').click()

driver.find_element_by_name('all').clear()

driver.find_element_by_name('all').send_keys('name')

driver.find_element_by_name('pwd').clear()

driver.find_element_by_name('pwd').send_keys('pwd')

driver.find_element_by_class_name('btn-primary').click()

def user_logout(self,driver):

driver.find_element_by_link_text('退出').click()

sleep(2)

if __name__ == '__main__':

driver = webdriver.chrome()

driver.get("")

driver.implicitly_wait(10)

login = login()

login.user_login(driver, "test_name", 'test_pwd')

sleep(3)

login.user_logout(driver)

login.user_login(driver, "test_name2", 'test_pwd2')

sleep(5)

login.user_logout(driver)

通過關鍵字的改變引起測試結果的改變叫關鍵字驅動測試。

selenium ide也是一種傳統的關鍵字驅動的自動化工具,robot framework 是乙個功能更強大的關鍵字驅動測試框架

from selenium import

webdriver

import

time

class

keytest():

def__init__(self,br=none):

if"ie" ==br:

self.driver =webdriver.ie()

elif

"firefox

" ==br:

self.driver =webdriver.firefox()

else

: self.driver =webdriver.chrome()

defopen(self,url):

self.driver.get(url)

defsend_keys(self,text):

try:

self.driver.find_element_by_id('kw

').send_keys(text)

except

:

print("

click fail!")

raise

defclick(self,id):

try:

self.driver.find_element_by_id(id).click()

except

:

print("

click fail!")

raise

defsleep(self,times):

time.sleep(int(times))

defquit(self):

self.driver.quit()

if__name__ == '

__main__':

dr =keytest()

#開啟瀏覽器

dr.open('

')#輸入"自動化測試"

dr.send_keys('

自動化測試')

# dr.click('su'

) dr.quit()

selenium 自動化測試。

第一步安裝 谷歌瀏覽器。第三步編寫測試測試指令碼 第四步 安裝selemium coding utf 8 引入webdriver和unittest所需要的包 from selenium import webdriver from selenium.webdriver.common.by import...

Python自動化測試 Selenium

第乙個selenium就。先show from selenium import webdriver driver webdriver.firefox driver.get assert oxcoder decode utf 8 in driver.title print driver.title d...

自動化測試selenium(四)

三 用例的執行順序 四 unittest斷言 unittest 各元件的關係為 test fixture 初始化和清理測試環境,比如建立臨時的資料庫,檔案和目錄等,其中 setup 和 setdown 是最常用的方法 test case 單元測試用例,testcase 是編寫單元測試用例最常用的類 ...