PO模型即page Objects,直译意思就是“页面对象”,通俗的讲就是把一个页面,或者说把一个页面的某个区域当做一个对象,区域内待定位的元素(页面层)和元素操作(操作层),相当于类的属性和类的方法,下面我们看具体的例子:
思路:将元素定位、元素操作和测试用例完全抽离,如果界面发生变化,需要维护的只是Search_element这个元素定位的类,这里我们分了两层,即定位元素(页面层)和元素操作(操作层),而把业务逻辑和测试用例放在一起,个人觉得可以更加灵活。
from poium import NewPageElement, CSSElement, PageWait, Page
class 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_element
class 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 pytest
from page_handle.baidu_demo.baidu_search import Search_baidu
class 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'])