本文进一步演示POM的具体实现,前面POM只是一个页面,一个测试脚本,现在我们要实现两个页面,两个测试脚本。在pageobjects包下,新建个页面对象:百度新闻页,具体文件结构如下图,其他和之前项目层级结构保持不变。
——封装的logggr日志类和浏览器代码在https://blog.csdn.net/aa122509969/article/details/124410722?spm=1001.2014.3001.5502
——封装的Selenium基本方法代码在https://blog.csdn.net/aa122509969/article/details/124450220?spm=1001.2014.3001.5502
百度首页页面类代码(baidu_frontpage.py),定义了百度新闻的入口
# coding=utf-8
from framework.base_page import BasePage
class FrontPage(BasePage):
input_box = "id=>kw"
search_submit = "xpath=>//*[@id='su']"
# 百度新闻入口
news = 'xpath=>//*[@id="s-top-left"]/a[1]'
def type_search(self, text):
self.type(self.input_box, text)
self.sleep(2)
def send_submit_btn(self):
self.click(self.search_submit)
self.sleep(2)
def click_news(self):
self.click(self.news)
self.sleep(2)
百度新闻首页的页面类代码(baidu_news_page.py)
# coding=utf-8
from framework.base_page import BasePage
class NewsHomePage(BasePage):
news_search_frame = 'name=>word'
news_highlights = 'xpath=>//*[@id="pane-news"]/div/ul/li[1]/strong/a'
def type_news_search_frame(self,text):
self.type(self.news_search_frame, text)
self.sleep(2)
def clear_news_search_frame(self):
self.clear(self.news_search_frame)
self.sleep(2)
def click_newspage_link(self):
self.click(self.news_highlights)
self.sleep(2)
测试类代码 (test_news_paga.py)
# coding=utf-8
import unittest
from framework.browser_engine import BrowserEngine
from pageobjects.baidu_news_page import NewsHomePage
from pageobjects.baidu_frontpage import FrontPage
class ViewNews(unittest.TestCase):
def setUp(self):
"""
测试固件的setUp()的代码,主要是测试的前提准备工作
:return:
"""
browse = BrowserEngine(self)
self.driver = browse.open_browser(self)
def tearDown(self):
"""
测试结束后的操作,这里基本上都是关闭浏览器
:return:
"""
self.driver.quit()
# 测试新闻页面
def test_view_news_views(self):
"""
这里一定要test开头,把测试逻辑代码封装到一个test开头的方法里。
:return:
"""
# 百度首页点击新闻
baidupage = FrontPage(self.driver)
baidupage.click_news()
baidupage.switch_windows()# 调用切换窗口方法
# 新闻页
newspage = NewsHomePage(self.driver)
newspage.get_windows_img()# 调用截图方法
newspage.type_news_search_frame('selenium')
newspage.clear_news_search_frame()
newspage.click_newspage_link()
newspage.sleep(2)
newspage.switch_windows()
newspage.get_windows_img()
if __name__ == '__main__':
unittest.main()
通过上面的脚本,进入一个新的页面,就要初始化这个页面的对象,然后才能调用这个页面相关的方法,driver这个实例对象在不同页面之间切换,这个就是POM的核心内容。



