PO模型即page Objects,直译意思就是“页面对象”,通俗的讲就是把一个页面,或者说把一个页面的某个区域当做一个对象,区域内待定位的元素(页面层)和元素操作(操作层),相当于类的属性和类的方法,下面我们看具体的例子:

    思路:将元素定位、元素操作和测试用例完全抽离,如果界面发生变化,需要维护的只是Search_element这个元素定位的类,这里我们分了两层,即定位元素(页面层)和元素操作(操作层),而把业务逻辑和测试用例放在一起,个人觉得可以更加灵活。

    1. from poium import NewPageElement, CSSElement, PageWait, Page
    2. class Search_element(Page):
    3. """百度首页页面元素定位"""
    4. input_text = NewPageElement(css='input[name="wd"]', describe="输入搜索关键词")
    5. click_btn = NewPageElement(css='input[class$="s_btn"]', describe="点击搜索")
    1. from page_element.baidu_demo.baidu_search import Search_element
    2. class Search_baidu(Search_element):
    3. """百度首页页面元素操作"""
    4. def input_search(self, search_key):
    5. """输入搜索关键词"""
    6. self.input_text.send_keys(search_key)
    7. def click_search(self):
    8. """点击搜索"""
    9. self.click_btn.click()
    1. """使用poium库实现百度搜索功能"""
    2. import pytest
    3. from page_handle.baidu_demo.baidu_search import Search_baidu
    4. class TestBaidu:
    5. """百度搜素用例1-1"""
    6. def test_baidu_search_case2(self, browser, baidu_url):
    7. page_baidu = Search_baidu(browser)
    8. page_baidu.get(baidu_url)
    9. page_baidu.input_search('pytest')
    10. page_baidu.click_search()
    11. if __name__ == '__main__':
    12. pytest.main(['-v', '-s', 'test_baidu_demo.py::TestBaidu::test_baidu_search_case2'])