selenium、unittest——POM架構並出報告

來源:互聯網
上載者:User

標籤:rip   百度搜   dem   用例   inpu   sse   clear   驗證   啟動   

學習隔壁大神的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()

 

產生報告

 

selenium、unittest——POM架構並出報告

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.