1. 程式人生 > >一、Python+SeleniumPOM4-框架-封裝日誌和遊覽器引擎

一、Python+SeleniumPOM4-框架-封裝日誌和遊覽器引擎

 前置準備

configpraser 讀取配置檔案

[engintype]

#drivertype=firefox注意這裡只能有一個鍵值對存在

drivertype=chrome

通過config = configpraser.ConfigPraser()

config.read(配置檔案的路徑)

config.get("engintype","drivertype")來讀取資訊

準備日誌類

import logging
import os
import time
class Logger(object):
    #傳入的logger名字
def __init__(self,loggername):
        '''
指定儲存日誌的檔案路徑,日誌級別,以及呼叫的檔案 將日誌存放在指定的檔案中去 :param logger: ''' self.logger = logging.getLogger(loggername) self.logger.setLevel(logging.DEBUG) #設定日誌的型別 #建立一個時間戳,用於日誌的儲存 timestamps = time.strftime("%Y%m%d%H%M%S",time.localtime(time.time())) #獲取日誌的儲存的路徑 log_path = os.path.dirname(os.path.abspath("."
))+"/logs/" # 如果case組織結構式 / testsuit / featuremodel / xxx.py , 那麼得到的相對路徑的父路徑就是專案根目錄 log_name=log_path+timestamps+".log" #建立一個handler fh = logging.FileHandler(log_name) fh.setLevel(logging.INFO) #建立一個handler,用於控制檯輸出 console_output = logging.StreamHandler() console_output.setLevel(logging.INFO) #定義輸出的格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setFormatter(formatter) console_output.setFormatter(formatter) #給logger新增handler self.logger.addHandler(fh) self.logger.addHandler(console_output) def getlog(self): return self.logger

 準備引擎類

import configparser
import os.path
from selenium import webdriver
from framework.logger import Logger
#測試configparser的用法
# print(os.path.abspath("."))#獲取當前的路勁
# config = configparser.ConfigParser()
# file_path = os.path.dirname(os.path.abspath('.')) + '\\config\\browser_engin.ini'
# config.read(file_path)
# print(config.get("browsertype","browserName"))
logger = Logger(loggername="BrowserEngine").getlog()
class BrowseEngin(object):

    dir = os.path.dirname(os.path.abspath(","))
    chrome_driver_path = dir+"/tools/chromedriver.exe"
ie_driver_path = dir+"/tools/IEDriverServer.exe"
def __init__(self,driver):
        self.driver = driver
    def open_browser(self,driver):
        config = configparser.ConfigParser()
        file_path = os.path.dirname(os.path.abspath('.')) + '/config/browser_engin.ini'
config.read(file_path)
        browser = config.get("browsertype","browserName")
        logger.info("you had select %s browser" % browser)
        url = config.get("testServer","URL")
        logger.info("the test server url is %s"% url)


        if browser =="Firefox":
            driver = webdriver.Firefox()
            logger.info("start firefox browser")
        if browser == "Chrome":
            driver = webdriver.Chrome(self.chrome_driver_path)
            logger.info("start firefox browser")
        if browser =="IE":
            driver = webdriver.Ie(self.ie_driver_path)
            logger.info("start firefox browser")

        driver.get(url)
        logger.info("Open url: %s" % url)
        driver.maximize_window()
        logger.info("Maximize the current window.")
        driver.implicitly_wait(10)
        logger.info("Set implicitly wait 10 seconds.")
        return driver
def quit_browser(self):
        logger.info("Now ,close and quit the browser")
        self.driver.quit()

準備測試類驗證改引擎是否可用

import unittest
from framework import brower_engin
import time
class BaiduSearch(unittest.TestCase):
    def setUp(self):
        browser = brower_engin.BrowseEngin(self)
        self.driver = browser.open_browser(self)
    def tearDown(self):
        self.driver.quit()
    def test_baidu_search(self):
        self.driver.find_element_by_id('kw').send_keys("selenium")
        time.sleep(1)
        self.assertEqual("selenium",self.driver.title,"fail")
if __name__=="__main__":
    unittest.main()

相關推薦

Python+SeleniumPOM4-框架-封裝日誌遊覽引擎

 前置準備configpraser 讀取配置檔案[engintype]#drivertype=firefox注意這裡只能有一個鍵值對存在drivertype=chrome通過config = configpraser.ConfigPraser()config.read(配置檔

三十python學習之Flask框架(三)檢視:路由上下文Flask-Script擴充套件

一、裝飾器路由的具體實現 1.Flask框架路由實現 Flask有兩大核心:Werkzeug和Jinja2 Werkzeug實現路由、除錯和Web伺服器閘道器介面 Jinja2實現了模板。 Werkzeug是一個遵循WSGI協議的python函式庫

四十python學習之Django框架(二):Cookie,Session的相關使用

三、cookie: Cookie,有時也用其複數形式Cookies, 指某些網站為了辨別使用者身份、進行session跟蹤而儲存在使用者本地終端的資料(通常經過加密) Cookie最早是網景公司的前僱員Lou Montulli在1993年3月的發明。 Cookie是由伺服器端

Python變數資料型別() 基本資料型別

Python中資料型別 計算機顧名思義就是可以做數學計算的機器,因此,計算機程式理所當然地可以處理各種數值。但是,計算機能處理的遠不止數值,還可以處理文字、圖形、音訊、視訊、網頁等各種各樣的資料,不同的資料,需要定義不同的資料型別。在Python中,能夠直接處

那些年讀過的書《Java並發編程實戰》構建線程安全類並發應用程序的基礎

修改 strong pad 應用程序 什麽 定義 表現 額外 構建 1、線程安全的本質和線程安全的定義 (1)線程安全的本質 並發環境中,當多個線程同時操作對象狀態時,如果沒有統一的狀態訪問同步或者協同機制,不同的線程調度方式和不同的線程執行次序就會產生不同的不正確的結果

python環境準備

選擇 eset ann 安裝 man 下載地址 load 下載 don 1.操作系統 操作系統:windowsserver2016; 2.python python版本:python-3.6.2-amd64(3.6.2 64位可執行版本);下載地址: https://

python特性+python安裝測試

追加 寫代碼 通過 直接 編寫代碼 str 系統 執行 令行 解釋性    當你使用C或者C++語言編寫程序時,需要通過編譯器將源代碼編譯成電腦能夠識別的語言(二進制機器碼)。當運行這些程序時候,連接器將會從硬盤中將編譯好的程序從硬盤中拷貝到內存中運行。   python:

Python隨筆()python基礎

python在pycharm下設置自己的模板:在File---settings---File and Code Templates---Python script 腳本裏添加:#!usr/bin/env python #-*- coding:utf-8 _*- """ @author:${USER} @fi

Python安裝與Pycharm使用入門

進入 epel源 targe ext width ngx enter date prefix 一、安裝Python 1、Linux下安裝 一般系統默認已安裝2.6.6版本,升級成2.7版本, 但 2.6 不能刪除,因為系統對它有依賴,epel源裏最新的也是2.6版本,所以以

CSS3的其他重要樣式屬性

用戶 作用 -o VG 尺寸 offset 不可 nta vertical 一、顏色相關樣式 1、利用alpha通道來設定顏色 2、alpha通道與opacity屬性的區別 3、指定顏色值為transparent(完全透明) 二、用戶界面的相關樣式 1、輪廓相關樣式 css

python函數學習

zha 元祖 pytho 1=1 fun 參數 元素 否則 func 1. 定義函數 def 函數名(形參):     函數體     return xxx--------其下面的內容不再執行 ----------------------------------

Python-Django框架的select_related prefetch_related函式對 QuerySet 查詢的優化

概念: select_related()當執行它的查詢時它沿著外來鍵關係查詢關聯的物件資料。它會生成一個複雜的查詢並引起效能的消耗,但是在以後使用外來鍵關係時將不需要資料庫查詢。 prefetch_related()返回的也是QuerySet,它將在單個批處理中自動檢索每個

Java小專案——飛機大戰(實現執行緒繪製背景我方飛機,鍵盤控制飛機運動)

1 總體需求分析 1.1 類 1、主類 2、我方飛機類 3、執行緒類 2.2 效果圖 2 實現 2.1 飛機類 MyPlane 飛機類包括以下引數: 位置x、y 速度vx、vy 圖片圖示myicom:設定為飛機的圖片   飛機類

Python設計模式之工廠方法

工廠方法 使用相同的介面,來處理不同的事情。 在工廠設計模式中,客戶端可以請求一個物件,無需知道這個物件來自哪裡(使用具體的哪個類來生成的,使用者只是呼叫同一個方法就能實現) 工廠通常有兩種形式, 一種是工廠方法 一種是抽象工廠 以下 是工廠方法的程式碼 使用者通

PythonPython基礎

0 序 先講一個故事。西漢初期,丞相蕭何死後,由曹參接任,曹丞相一天到晚都請人喝酒聊天,好像根本就不用心在治理國家似的。惠帝感到很納悶,又想不出個所以然來,只以為是曹相國嫌他太年輕了,看不起他,所以就不願意盡心盡力來輔佐他。終於有一天漢惠帝責問曹參,曹參反問“請

【MVC】.Net實踐()—建立mvc框架的專案實體模型

一、 建立MVC框架的專案 (1)像新增平常專案一樣新增一個web應用程式,檔案—>新建—>專案 (3)接著選擇MVC (4)這樣就建好一個MVC框架的專案了 二、連線資料庫 建立

PYTHON 學習筆記之 join split 函式用法

python join 和 split方法的使用,join用來連線字串,split恰好相反,拆分字串的。 1.join用法示例  >>>li = ['my','name','is

python的檔案型別與變數

原始碼就是py檔案,可以直接執行和訪問: cat 1.py print ("hello word!") python 1.py hello word! 編譯成pyc檔案 .pyc 檔案(位元組程式碼) vim 11.py #!/usr/bin/python

python基礎——計算機組成原理及python的產生

一、什麼是計算機 計算機:俗稱電腦,是現代一種用於高速計算的電子機器,可以進行數值計算和邏輯判斷,還具有儲存記憶功能,且能夠按照程式的執行,自動、高速處理資料。 計算機是20世紀最先進的科學技術發明之一。 二、計算機系統由什麼組成 1.1 硬體系統   主要