PO模型即page Objects,直译意思就是“页面对象”,通俗的讲就是把一个页面,或者说把一个页面的某个区域当做一个对象,区域内待定位的元素(页面层)和元素操作(操作层),相当于类的属性和类的方法,下面我们看具体的例子:
思路:将元素定位、元素操作和测试用例完全抽离,如果界面发生变化,需要维护的只是Search_element这个元素定位的类,这里我们分了两层,即定位元素(页面层)和元素操作(操作层),而把业务逻辑和测试用例放在一起,个人觉得可以更加灵活。
from poium import NewPageElement, CSSElement, PageWait, Pageclass Search_element(Page):"""百度首页页面元素定位"""input_text = NewPageElement(css='input[name="wd"]', describe="输入搜索关键词")click_btn = NewPageElement(css='input[class$="s_btn"]', describe="点击搜索")
from page_element.baidu_demo.baidu_search import Search_elementclass Search_baidu(Search_element):"""百度首页页面元素操作"""def input_search(self, search_key):"""输入搜索关键词"""self.input_text.send_keys(search_key)def click_search(self):"""点击搜索"""self.click_btn.click()
"""使用poium库实现百度搜索功能"""import pytestfrom page_handle.baidu_demo.baidu_search import Search_baiduclass TestBaidu:"""百度搜素用例1-1"""def test_baidu_search_case2(self, browser, baidu_url):page_baidu = Search_baidu(browser)page_baidu.get(baidu_url)page_baidu.input_search('pytest')page_baidu.click_search()if __name__ == '__main__':pytest.main(['-v', '-s', 'test_baidu_demo.py::TestBaidu::test_baidu_search_case2'])
