天天看點

Selenium自動化測試模型介紹。

    自動化測試模型分為四大類: 線性測試、 子產品化驅動測試、 資料驅動測試和關鍵字驅動測試。

    本地Web測試站點搭建,下載下傳:【一鍵安裝包(運作環境+ECMS)】(含安裝說明)。

  •     工具:帝國CMS
  •     通道:帝國軟體

線性模式

       通過錄制或編寫對web的操作步驟産生相對應的線性腳本,并且每個測試腳本相對獨立,不依賴或調用其他子產品,單純的模拟使用者操作場景。

'''
自動化測試模型--線性測試
案例:在帝國軟體首頁模拟自動登入和退出操作。
'''

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
url = "http://localhost/"
driver.get(url)
# 設定隐性等待5s
driver.implicitly_wait(5)

userName = "XXXXX"
passWord = "XXXXX"

# 輸入登入資訊
driver.find_element_by_xpath("//form[@name='login']/input[3]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[3]").send_keys(userName)
driver.find_element_by_xpath("//form[@name='login']/input[4]").clear()
driver.find_element_by_xpath("//form[@name='login']/input[4]").send_keys(passWord)

# 登入
driver.find_element_by_xpath("//form[@name='login']/input[5]").click()

sleep(3)

# 退出
driver.find_element_by_xpath("/html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/a[6]").click()

sleep(3)

# 警告框處理
driver.switch_to_alert().accept()

sleep(3)
driver.quit()
           

子產品化驅動測試

        把重複的操作代碼封裝為獨立的公共子產品,當需要用到這些子產品時就直接調用,最大限度地消除了重複,進而提高測試用例的可維護性。

'''
自動化測試模型--子產品化驅動測試
執行個體:将登入和退出操作封裝為獨立的公共子產品進行調用。
'''

from selenium import webdriver
import time


class Login_OUT_Test():
    '''登入與退出'''

    def login_Test(driver):
        '''登入方法'''

        # self.userName=userName
        # self.passWord=passWord

        driver.find_element_by_xpath("//form[@name='login']/input[3]").clear()
        driver.find_element_by_xpath("//form[@name='login']/input[3]").send_keys("XXXX")

        driver.find_element_by_xpath("//form[@name='login']/input[4]").clear()
        driver.find_element_by_xpath("//form[@name='login']/input[4]").send_keys("XXXX")

        # 登入
        driver.find_element_by_xpath("//form[@name='login']/input[5]").click()

    def loginOut_Test(driver):
        '''退出方法'''

        driver.find_element_by_xpath("/html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/a[6]").click()

        time.sleep(3)

        # 警告框處理
        driver.switch_to_alert().accept()


if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.get('http://localhost/')
    driver.maximize_window()
    driver.implicitly_wait(5)

    Login_OUT_Test.login_Test(driver)
    Login_OUT_Test.loginOut_Test(driver)
           

編寫調用上段代碼子產品。

'''
調用Test_1230_02_MKHQD_CS子產品
功能:登入和退出。
'''

from Test_1230_02_MKHQD_CS import *

browser = webdriver.Chrome()
browser.get('http://localhost/')
browser.maximize_window()
browser.implicitly_wait(5)

Login_OUT_Test.login_Test(browser)
Login_OUT_Test.loginOut_Test(browser)

browser.quit()
           

資料驅動測試

    類似于資料的參數化,因資料的改變進而讓測試的結果産生變化。

'''
自動化測試模型--資料驅動測試
執行個體:實作多個賬戶登入。
'''

import time


class Login_OUT_Test():
    '''登入與退出'''

    def login_Test(driver, userName, passWord):
        '''登入方法'''

        # self.userName=userName
        # self.passWord=passWord

        driver.find_element_by_xpath("//form[@name='login']/input[3]").clear()
        driver.find_element_by_xpath("//form[@name='login']/input[3]").send_keys(userName)

        driver.find_element_by_xpath("//form[@name='login']/input[4]").clear()
        driver.find_element_by_xpath("//form[@name='login']/input[4]").send_keys(passWord)

        # 登入
        driver.find_element_by_xpath("//form[@name='login']/input[5]").click()

        # 驗證登入資訊
        Login_Validate = driver.find_element_by_xpath(
            "/html/body/table[1]/tbody/tr/td/table/tbody/tr/td[1]/font/b").text
        print('登入名:', Login_Validate)

    def loginOut_Test(driver):
        '''退出方法'''

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

        time.sleep(3)

        # 警告框處理
        driver.switch_to_alert().accept()
           

編寫調用上段代碼子產品。

'''
調用Test_1230_04_SJQD_CS子產品。
執行個體:實作不同賬戶資訊登入。
'''
from Test_1230_04_SJQD_CS import *
from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get("http://localhost/")
browser.maximize_window()
browser.implicitly_wait(5)

Login_OUT_Test.login_Test(browser, 'XXXX1', 'XXXX1')

time.sleep(3)
Login_OUT_Test.loginOut_Test(browser)

# 第二次不同賬戶資訊登入
Login_OUT_Test.login_Test(browser, 'XXXX2', 'XXXX1')
time.sleep(5)
Login_OUT_Test.loginOut_Test(browser)
           

關鍵字驅動測試

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

目前的關鍵字驅動測試工具有:QTP、RIDE(Robot Framework)和selenium IDE。

selenium IDE工具頁面如下:

Selenium自動化測試模型介紹。

繼續閱讀