標籤: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架構並出報告