1. 程式人生 > >Python+Selenium中級篇之9-把截圖類方法封裝到前面的BasePage.py

Python+Selenium中級篇之9-把截圖類方法封裝到前面的BasePage.py

      本文介紹把截圖類方法封裝到BasePage.py檔案裡,這個檔案是在前面Selenium方法二次封裝文章裡建立的,具體程式碼請到前面這篇裡找。我們截圖類寫死了把截圖圖片儲存到根目錄下的Screenshots資料夾裡,圖片名稱是當前系統時間,圖片字尾名是png。

新的BasePage.py內容如下:

# coding=utf-8
import os
import time

from test.logger import Logger

mylog = Logger(logger='BasePage').getlog()
class BasePage(object):
    """
    主要是把常用的幾個Selenium方法封裝到BasePage這個類,我們這裡演示以下幾個方法
    back()
    forward()
    get()
    quit()
    """

    def __init__(self, driver):
        """
        寫一個建構函式,有一個引數driver
        :param driver:
        """
        self.driver = driver

    def back(self):
        """
        瀏覽器後退按鈕
        :param none:
        """
        self.driver.back()

    def forward(self):
        """
        瀏覽器前進按鈕
        :param none:
        """
        self.driver.forward()

    def open_url(self, url):
        """
        開啟url站點
        :param url:
        """
        self.driver.get(url)

    def quit_browser(self):
        """
        關閉並停止瀏覽器服務
        :param none:
        """
        self.driver.quit()

    def take_screenshot(self):
        """
        截圖並儲存在根目錄下的Screenshots資料夾下
        :param none:
        """
        file_path = os.path.dirname(os.getcwd()) + '/Screenshots/'
        rq = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
        screen_name = file_path + rq + '.png'
        try :
            self.driver.get_screenshot_as_file(screen_name)
            mylog.info("開始截圖並儲存")

        except Exception as e:
            mylog.error("出現異常",format(e))


主要看最後一個截圖類方法的封裝。

測試類相關程式碼如下:

# coding=utf-8
import time
from selenium import webdriver

from test.basepage import BasePage


class TestScreenshot(object):
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(10)
    basepage = BasePage(driver)

    def test_take_screen(self):
        self.basepage.open_url("https://www.baidu.com")
        time.sleep(1)
        self.basepage.take_screenshot()
        self.basepage.quit_browser()

test = TestScreenshot()
test.test_take_screen()
執行後,可以在根目錄下Screenshots資料夾裡找到百度首頁截圖。

本文就介紹了截圖類方法新增到BasePage裡,介紹瞭如何儲存到根目錄下的Screenshots資料夾。

相關推薦

Python+Selenium中級9-方法封裝到前面的BasePage.py

      本文介紹把截圖類方法封裝到BasePage.py檔案裡,這個檔案是在前面Selenium方法二次封裝文章裡建立的,具體程式碼請到前面這篇裡找。我們截圖類寫死了把截圖圖片儲存到根目錄下的Sc

Python+Selenium練習9-清除文字方法

       在前面的基礎篇的最後一篇(點這裡),我們用到了輸入字元和點選按鈕這樣的操作。用send_keys()來輸入字串到文字輸入框這樣的頁面元素,用click()來點選頁面上支援點選的元素。有時

Python+Selenium中級1-Python IDE工具-PyCharm的安裝和簡單使用

       從本文開始陸續介紹一些中級的技能,本篇文章介紹,在Python開發過程中,比較流行,很優秀的一款IDE工具-PyCharm,這裡關於它的介紹就一句話,它就相當於Java開發中的Eclip

Python+Selenium中級10-Python中的繼承的使用

      本文開始介紹一個面向物件設計領域裡,很常見的一種思想,繼承。繼承有很多好處,常聽到的一句話就是,子類能夠直接使用父類的方法,這樣就可以減少子類程式碼量。其實,在自動化測試框架設計過程中,是

Python+Selenium中級3-二次封裝Selenium中幾個方法

       本文來介紹,如何把常用的幾個webdriver的方法封裝到自己寫的一個類中去,這個封裝過程叫二次封裝Selenium方法。我們把開啟站點,瀏覽器前進和後退,關閉和退出瀏覽器這這個方法封裝

Python+Selenium中級8-Python自定義封裝一個簡單的Log

       本文介紹如何寫一個Python日誌類,用來輸出不同級別的日誌資訊到本地資料夾下的日誌檔案裡。為什麼需要日誌輸出呢,我們需要記錄我們測試指令碼到底做了什麼事情,最好的辦法是寫事件監聽。這個

Python+Selenium練習27-多視窗之間切換

本文來介紹如何處理driver在多視窗之間切換,想一下這樣的場景,在頁面A點選一個連線,會觸發在新Tab或者新視窗開啟頁面B,由於之前的driver例項物件在頁面A,但是你接下來的指令碼是操作頁面B的元素,這樣就造成了找不到元素的報錯。本來介紹selenium中switch_to.window(

Python+Selenium基礎5-第一個完整的自動化測試指令碼

前面文章,我們介紹瞭如何採用XPath表示式去定位網頁元素,在掌握瞭如何抓取或者如何書寫精確的XPath表示式後,我們可以開始寫自己的第一個真正意義上的webui 自動化測試指令碼,就相當於,你在學習Python,如何在控制檯列印Hello,Python! 一樣。    &nb

Python+Selenium基礎4-XPath的使用

  開始寫自動化指令碼之前,我們先學習幾個概念,在完全掌握了這幾個概念之後,有助於我們快速上手,如何去編寫自動化測試指令碼。       元素,在這個教程系列,我們說的元素之網頁元素(web element)。在網頁上面的文字輸入框,按鈕,多選,單

Python+Selenium基礎3-開啟和關閉IE/Chrome瀏覽器

前面文章介紹了,如何呼叫webdriver介面方法來開啟和關閉Firefox瀏覽器,本文介紹如何開啟IE和Chrome瀏覽器。web專案,需要做相容性測試,最重要的是瀏覽器相容性測試。如果只考慮windows平臺,相信應該很多公司必須要測試IE、Firefox、Chrome這三大瀏覽器。所以webui 自動化

Python+Selenium基礎2-開啟和關閉火狐瀏覽器

本節介紹如何初始化一個webdriver例項物件driver,然後開啟和關閉firefox瀏覽器。要用selenium開啟fiefox瀏覽器。首先需要去下載一個driver外掛geckodriver.exe, 下載地址https://github.com/mozilla/geckodriver/release

Python+Selenium練習4-利用link text定位元素

本文介紹如何通過link text 來定位頁面元素,我們開啟網頁,一些可以點選的連結跳轉上面的文字,就是link text,用百度首頁舉例來看:   在上面圖中,這一排上面的文字都是link text,例如我們要通過“新聞”這個文字欄位來定義這個跳轉連結元素。   指令碼如下:

Python+Selenium練習2-利用ID定位元素

在前面一篇文章,我們介紹瞭如何摘取頁面欄位,通過正則進行匹配符合要求的欄位。如果感覺有點困難,不能立馬理解,沒有關係。把字串摘取放到第一篇,是因為自動化測試指令碼,經常要利用字串操作,字串切割,查詢,匹配等手段,得到新的字串或字串陣列,然後根據新得到的字串進行判斷用例是否通過。   &n

Python+Selenium練習1-摘取網頁上全部郵箱

前面已經介紹了Python+Selenium基礎篇,通過前面幾篇文章的介紹和練習,Selenium+Python的webUI自動化測試算是入門了。接下來,我計劃寫第二個系列:練習篇,通過一些練習,瞭解和掌握一些Selenium常用的介面或者方法。      

Python+Selenium練習5-利用partial link text定位元素

本文介紹如何通過partial link text來定位頁面元素。看到這個,有點和前一篇文字link text有點類似。字面意思,確實和link text相類似,partial link text就是選擇這個元素的link text中一部分欄位。      

Python+Selenium練習6-利用class name定位元素

有時候,我們在用firepath(不會的請點這裡)檢視元素的XPath資訊,發現沒有可以用來定位的id資訊,這個時候我們就需要考慮用其他的可用的來定位元素。本文介紹如何通過元素節點中class name的值來定位頁面元素。還是以百度首頁,搜尋輸入框定位舉例: XPath截圖   相關指令碼程式

Python+Selenium練習3-利用tag name定位元素

前一篇文章介紹瞭如何通過元素的id值來定位web元素,本文介紹如何通過tag name來定位元素。個人認為,通過tag name來定位還是有很大缺陷,定位不夠精確。主要是tag name有很多重複的,造成了選擇tag name來定位頁面元素不準確,所以使用這個方法定位web元素的機會很少。  &n

Python+Selenium練習28-處理iframe切換

本文介紹如何利用Selenium中方法,在不同iframe中切換。 問題:有時候我們發現元素定位沒問題,在測試回放的過程,發現就是找不到元素報錯。 由於沒有找到合適的iframe網站,這裡不好用程式碼

Python+Selenium練習11-瀏覽器上前進和後退操作

本文來介紹上如何,利用webdriver中的方法來演示瀏覽器中位址列旁邊的前進和後退功能。 相關指令碼程式碼如下: # coding=utf-8 import time from selenium i

Python+Selenium練習16-點選單選按鈕-Radio Button

本文介紹如何利用selenium中的方法去操作單選按鈕(Radio Button)。 利用百度新聞頁面兩個單選按鈕舉例 預設是選擇新聞全文,我試試在兩者之前來回點選。 實際上,勾選一個單選按鈕,也