Python 자동화 테스트 PO 모델 패 키 징 과정 상세 설명

자동화 에서 Selenium 자동화 테스트 에서 PageObject(사상 은 대상 을 대상 으로 하 는 특징 과 같다)라 는 이름 이 자주 언급 되 는데 보통 PO 모델 은 테스트 사례 의 유지 효율 을 크게 향상 시 킬 수 있다.
장점:재사 용 가능,업무 와 대상 분리,코드 구조 뚜렷,코드 유지보수 편리

핵심 요소
1.PO 모드 에서 패 키 징 을 분리 하여 하나의 BasePage 류 로 통합 합 니 다.이 기본 클래스 는 webdriver 인 스 턴 스 만 실현 하 는 속성 을 가 져 야 합 니 다.
2.모든 페이지 는 BasePage 를 계승 하고 driver 를 통 해 이 페이지 의 요 소 를 관리 하 며 page 의 조작 을 하나의 방법 으로 패키지 합 니 다.
3.TestCase 는 unittest.Testcase 류 를 계승 하고 page 류 에 의존 하여 해당 하 는 테스트 절 차 를 실현 합 니 다.
PO 는 바 이 두 페이지 에 들 어가 데 이 터 를 입력 한 후 다음 페이지 로 들 어 갑 니 다.
조직 코드

1:BasePage 구현

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #    
class BasePage():
    '''
    BasePage            。
      driver,find_element 
    '''
    #    BasePage  ,     __init__  ,         
    def __init__(self,driver,url):
        self.driver = driver
        self.base_url = url
    #     
    def get(self):
        self.driver.get(self.base_url)
    #    ,      
    def get_element(self,*locator):
        return self.driver.find_element(*locator)
    #  
    def left_click(self,*locator):
        ActionChains(self.driver).click(self.get_element(*locator)).perform()
    #  
    def send_text(self,text,*locator):
        self.driver.find_element(*locator).send_keys(text)
    #  
    def clear_text(self, *locator):
        self.driver.find_element(*locator).clear()
    #     
    def switch_iframe(self,*locator):
        self.driver.switch_to.frame(self.driver.find_element(*locator))
    #    
    def switch_window(self,n):
        self.driver.switch_to.window(self.driver.window_handles[n])
2:Search Page 구현

from selenium.webdriver.common.by import By
from base.base_page import BasePage
class SearchOne(BasePage):
    def __init__(self,driver,url):
        BasePage.__init__(self,driver,url)
    #    
    def open_baidu(self):
        self.get()
    #    
    def input_search_content(self,text):
        self.send_text(text,By.ID,"kw")
    #     
    def click_baidu_search(self):
        self.left_click(By.ID, "su")
    def click_open_hao(self):
        self.left_click(By.XPATH,".//*[@id='1']/h3/a[1]")
3:테스트 케이스 구현

import unittest
from selenium import webdriver
from page.page_one import SearchOne
from page.page_two import SearchTwo
class BaiBu(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.driver = webdriver.Firefox()
        cls.driver.implicitly_wait(10)
    def test001(self):
        url="http://www.baidu.com"
        s = SearchOne(self.driver,url)
        s.open_baidu()
        s.input_search_content("123")
        s.click_baidu_search()
        s.click_open_hao()
        self.driver.switch_to.window(self.driver.window_handles[1])
    def test002(self):
        s=SearchTwo(self.driver,"")
        s.open_baidu_map()
    def tearDown(self) -> None:
    #      self.driver.quit()
        pass
if __name__ == '__main__':
    unittest.main()
PO 모드 의 장점
1:PO 는 업무 절차 와 페이지 요소 작업 이 분 리 된 모델 을 제공 하여 테스트 코드 를 더욱 선명 하 게 만 들 었 다.
2:페이지 대상 과 사례 를 분리 하여 우리 가 더 좋 은 재 활용 대상 을 만 듭 니 다.
3:재 활용 가능 한 페이지 방법 코드 가 더욱 최적화 된다.
4:더욱 효과 적 인 명령 방식 은 우리 로 하여 금 방법 이 조작 하 는 UI 요 소 를 더욱 명확 하 게 알 게 한다.
이상 은 Python 자동화 테스트 PO 모델 패키지 의 상세 한 내용 입 니 다.Python 자동화 테스트 PO 모델 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기