学习隔壁大神的POM框架,结合自己的用例进行修改整理并执行,操作遇到的主要问题是如何分布的写各个模块并统一运行,每个文件夹想要import里面的模块需要有__init__模块
POM主要分为三个部分,1、将selenium的基本操作写为自己的函数,2、将用例操作运用自己的操作函数写出步骤,3、加入unittest模块和报告模块,当然后还需要一个执行的主函数部分
#encoding=utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.implicitly_wait(30)
class Page(object):
      def __init__(self, driver, base_url=u"http://www.baidu.com/"):
            self.driver = driver
            self.base_url = base_url
            self.timeout = 30
      def find_element(self, *loc):
            return self.driver.find_element(*loc)
      def input_clear(self,loc):
            self.find_element(*loc).clear()
      def input_text(self, loc, text):
            self.find_element(*loc).send_keys(text)
      def click(self, loc):
            self.find_element(*loc).click()
      def get_title(self):
            return self.driver.title
from selenium.webdriver.common.by import By
from P.basePage import Page
reload(sys)
sys.setdefaultencoding("utf-8")
class SearchPage(Page):
    
      search_input = (By.ID, u‘kw‘)
      search_button = (By.ID, u‘su‘)
      def __init__(self, driver, base_url=u"http://www.baidu.com/"):
            Page.__init__(self, driver, base_url)
      def gotoPage(self):
            print u"打开首页: ", self.base_url
            self.driver.get(self.base_url)
      def input_search_clear(self):
            print u"清除默认值 "
            self.input_clear(self.search_input)
      def input_search_text(self, text=u"自动化测试报告"):
            print u"输入搜索关键字: 自动化测试报告 "
            self.input_text(self.search_input, text)
        
      def click_search_btn(self):
            print u"点击 确定  按钮"
            self.click(self.search_button)
#encoding=utf-8
import unittest
import sys,time
from selenium import webdriver
from P.searchPage import SearchPage
reload(sys)
sys.setdefaultencoding("utf-8")
# 百度搜索测试
class TestSearchPage(unittest.TestCase):
      def setUp(self):
            self.driver = webdriver.Firefox()
      def testSearch(self):
            driver = self.driver
            # 百度网址
            url = u"http://www.baidu.com/"
            # 搜索文本
            text = u"自动化测试报告"
            # 期望验证的标题
            assert_title = u"自动化测试报告_百度搜索"
            print assert_title
search_Page = SearchPage(driver, url)
            # 启动浏览器,访问百度首页
            search_Page.gotoPage()
            #清空默认值
            search_Page.input_search_clear()
            # 输入 搜索词
            search_Page.input_search_text(text)
            # 单击 百度一下 按钮进行搜索
            search_Page.click_search_btn()
            time.sleep(2)
            # 验证标题
            self.assertEqual(search_Page.get_title(), assert_title)
      def tearDown(self):
            self.driver.quit()
断言结果正确
以上为POM框架,添加批量执行和报告
#encoding=utf-8
import unittest
import sys
import HTMLTestRunner
from O.testSearchPage import TestSearchPage
if __name__ == ‘__main__‘:
        testunit = unittest.TestSuite()
        testunit.addTest(TestSearchPage(‘testSearch‘))
        # 定义报告输出路径
        htmlPath = u"page_demo_Report.html"
        fp = file(htmlPath, "wb")
        runner = HTMLTestRunner.HTMLTestRunner(stream=fp, 
                 title=u"baidu测试", 
                 description=u"测试用例结果")
        runner.run(testunit)
fp.close()

生成报告

原文:https://www.cnblogs.com/garvicker/p/9523953.html