python web自動化測試框架搭建(功能&接口)——功能測試模塊

功能測試使用selenium,模塊有:html

 

一、futil: 公共方法,如元素高亮顯示web

# coding=utf-8
"""高亮顯示元素"""
def highLight(driver,element):
        js = '''
            element = arguments[0];
            element.setAttribute('style','border: 3px solid red;')
            '''
        driver.execute_script(js,element)

 

二、models: 頁面控件和頁面操做方法封裝chrome

頁面基類BasePage.py瀏覽器

# coding=utf-8
from selenium import webdriver

TIME_OUT=5 #超時時間

class BasePage(object):
    def __init__(self, driver):
        """初始化瀏覽器"""
        self.driver = driver
        '''
        if driver_type == "ie":
            try:
                self.driver = webdriver.Ie()
            except Exception,e:
                print e
        elif driver_type == "chrome":
            try:
                self.driver = webdriver.Chrome()
            except Exception,e:
                print e
        else:
            try:
                self.driver = webdriver.Firefox()   
            except Exception,e:
                print e
        '''

    
    def opendriver(self, url):
        self.driver.get(url)
        self.driver.maximize_window()
        self.driver.implicitly_wait(TIME_OUT)
    
    def find_element(self, by, value):
        """查找元素"""
        try:
            return self.driver.find_element(by=by, value=value)
        except Exception, e:
            print e

    def find_elements(self, by, value):
        """查找元素集合"""
        try:
            return self.driver.find_elements(by=by, value=value)
        except Exception, e:
            print e

    def is_element_isexist(self, By, Value):
        """判斷元素是否存在"""
        try:
            self.driver.find_element(by=By, value=Value)
            return True
        except Exception, e:
            print e
            return False
        
    def close(self):
        """當前關閉瀏覽器tab"""
        try:
            self.driver.close()
        except Exception,e:
            print e
            
    def quit(self):
        """退出瀏覽器進程"""
        try:
            self.driver.quit()
        except Exception,e:
            print e

 

具體頁面封裝和操做LoginPage.py框架

# coding=utf-8
from BasePage import BasePage
from selenium.webdriver.common.by import By

class LoginPage(BasePage):
    '''
            登陸頁面的登陸窗口
    '''
    user_name = (By.NAME, "username")
    pass_word = (By.NAME, "password")
    btn_login = (By.CLASS_NAME, "login-btn")
    
    def __init__(self, driver):
        BasePage.__init__(self, driver)
        self.driver = driver
        self.input_username = self.find_element(*self.user_name)
        self.input_password = self.find_element(*self.pass_word)
        self.btn_login = self.find_element(*self.btn_login)
        
    def login(self, username, password):
        self.input_username.send_keys(username)
        self.input_password.send_keys(password)
        self.btn_login.click()   
# coding=utf-8
from BasePage import BasePage
from selenium.webdriver.common.by import By

class Index(BasePage):
    '''
            首頁
    '''
    user_menu = (By.ID, "userSetting")
    user_info = (By.XPATH, "//a[@href='user/userInfo']")
    language_span = (By.ID, "changeLanguage")
    chinese_li = (By.XPATH, "//li[@value='zh_cn']")
    english_li = (By.XPATH, "//li[@value='en']")
    
    def __init__(self, driver):
        BasePage.__init__(self, driver)
        self.driver = driver
        self.usermenu = self.find_element(*self.user_menu)
        self.userinfo = self.find_element(*self.user_info)
        self.languagespan = self.find_element(*self.language_span)
        self.chinase = self.find_element(*self.chinese_li)
        self.english = self.find_element(*self.english_li)
        
    def chengeLanguage(self):
        self.languagespan.click()
        self.english.click()
        self.driver.implicitly_wait(5)
        
        

 

二、Report: 測試報告文件夾測試

三、testcases: 具體測試用例實現ui

測試用例基類BaseCase.py,負責執行用例運行前和運行結束後操做url

# coding=utf-8

import unittest
import Logger
from selenium import webdriver

log = Logger.Loger()
class BaseCaseClass(unittest.TestCase):

    def setUp(self):
#         options = webdriver.ChromeOptions()
#         options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
#         options.add_argument("--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data/Default");
#         self.driver = webdriver.Chrome(chrome_options=options)
        self.driver = webdriver.Ie()
        self.url = "http://baidu.com"
        
    def tearDown(self):
        self.driver.close()
    
    def loginfo(self, msgStr):
        log.info(msgStr)

 

具體用例:spa

# coding=utf-8

from BaseCase import BaseCaseClass
from functiontest.models.LoginPage import LoginPage
from functiontest.models.IndexPage import Index
from functiontest.futil import Util

class CheckLogin(BaseCaseClass):
    
    def runTest(self):
        '''
        name:測試標題爲:XX系統
        verbosity:0
        '''
        self.driver.get(self.url)
        loginPage = LoginPage(self.driver)
        self.assertEqual(loginPage.driver.title,u"XX系統","標題不正確")
        

class CheckIndex(BaseCaseClass):
    
    def runTest(self):
        '''
        name:測試首頁存在我的資料選項
        verbosity:0
        '''
        self.driver.get(self.url)
        #self.driver.switch_to_window(self.driver.window_handles[1])
        loginPage = LoginPage(self.driver)
        loginPage.login("admin", "xxx")
        indexPage = Index(self.driver)
        indexPage.chengeLanguage()
        indexPage = Index(self.driver)
        indexPage.usermenu.click()
        Util.highLight(self.driver, indexPage.userinfo)
        self.assertEqual(indexPage.userinfo.text, "Personal Data","標題不正確")  

 

Python web功能&接口自動化測試框架搭建——接口用例實現code

Python web功能&接口自動化測試框架搭建——接口公共方法

Python web功能&接口自動化測試框架搭建——接口測試模塊

Python web功能&接口自動化測試框架搭建——功能測試模塊

Python web功能&接口自動化測試框架搭建——測試用例執行和結果收集

Python web功能&接口自動化測試框架搭建——通用模塊

Python web功能&接口自動化測試框架搭建——unittest介紹

Python web功能&接口自動化測試框架搭建——環境搭建

相關文章
相關標籤/搜索