Web自動化測試—PO設計模式(一)

前言
很多的測試同學懂得使用selenium進行Web自動化測試,
但是不知道如何去寫一個測試框架,或者說是一個容易維護的web自動化項目。
自己寫一個最基本的web自動化測試框架需要會什麼?
1. 語言基礎,學到面向對象
2. 熟練使用selenium API (操作瀏覽器的方法)
3. 會使用基本的工具庫,os,sys等
4. 一個測試框架 例如:unittest
5. page object設計模式 
6. 熟悉html、css
目錄結構
--pages
    --__init__.py
    --base_page.py
base_page.py
#coding:utf8
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

#所有頁面類的基類,實質上是對selenium進行二次封裝
class BasePage(object):
    def __init__(self,driver,path=None):
        self.driver = driver
        # self.driver = webdriver.Chrome()
        self.url = 'https://www.tapd.cn/'
        self.time_out = 10
        self.poll_frequency = 0.3
        self.open_web_page(path)
        self.driver.maximize_window()

    def open_web_page(self,path):
        if path != None:
            url = self.url + path
        else:
            url = None
        if url != None:
            self.driver.get(url)
        else:
            pass

    def wait(self,*locator):
        WebDriverWait(self.driver,self.time_out,self.poll_frequency).until(EC.visibility_of_element_located(locator))

    def wait_text(self,text=None,*locator):
        WebDriverWait(self.driver,self.time_out,self.poll_frequency).until(EC.text_to_be_present_in_element((locator),text))

    def wait_all(self,text=None,*locator):
        if text == None:
            self.wait(*locator)
        else:
            self.wait_text(text,*locator)

    def by_css(self,css,text=None):
        locator = (By.CSS_SELECTOR,css)
        self.wait_all(text,*locator)
        return self.driver.find_element(*locator)




if __name__ == '__main__':
    driver = webdriver.Chrome()
    test_base_page = BasePage(driver,'cloud_logins/login')
    test_base_page.by_css('#username').send_keys('XXXXXX')
    test_base_page.by_css('#password_input').send_keys('XXXXXX')
    test_base_page.by_css('#tcloud_login_button').click()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章