国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Selenium的Web自動化框架

這篇具有很好參考價值的文章主要介紹了基于Selenium的Web自動化框架。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

首先我們來看一下之前是如何書寫頁面模式中的類的:

BasePage:

class BasePage(object):
    """description of class"""

    #webdriver instance
    def __init__(self, driver):
        self.driver = driver

GoogleMainPage:

from BasePage import BasePage

from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

class GoogleMainPage(BasePage):
    """description of class"""
    searchbox = (By.ID,'lst-ib')

    def inputSearchContent(self,searchContent):
        searchBox = self.driver.find_element(*self.searchbox)
        searchBox.send_keys(searchContent+Keys.RETURN)

重新審視之前的實現(xiàn),我們可以發(fā)現(xiàn)在各個子類頁面中,均需要引用相當(dāng)?shù)膕elenium類庫(比如webdriver),并且需要用webdriver來定位頁面元素,這就會造成各個子類頁面與selenium類庫有較多的集成,并且也是書寫上的浪費(fèi)。

現(xiàn)在來看一下做了結(jié)構(gòu)調(diào)整的部分呈現(xiàn):

BasePage:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

class BasePage(object):
    """description of class"""

    #webdriver instance
    def __init__(self, browser='chrome'):
        '''
        initialize selenium webdriver, use chrome as default webdriver
        '''

        if browser == "firefox" or browser == "ff":
            driver = webdriver.Firefox()
        elif browser == "chrome":
            driver = webdriver.Chrome()
        elif browser == "internet explorer" or browser == "ie":
            driver = webdriver.Ie()
        elif browser == "opera":
            driver = webdriver.Opera()
        elif browser == "phantomjs":
            driver = webdriver.PhantomJS()
        try:
            self.driver = driver
        except Exception:
            raise NameError("Not found %s browser,You can enter 'ie', 'ff' or 'chrome'." % browser)

    def findElement(self,element):
        '''
        Find element

        element is a set with format (identifier type, value), e.g. ('id','username')

        Usage:
        self.findElement(element)
        '''
        try:
            type = element[0]
            value = element[1]
            if type == "id" or type == "ID" or type=="Id":
                elem = self.driver.find_element_by_id(value)

            elif type == "name" or type == "NAME" or type=="Name":
                elem = self.driver.find_element_by_name(value)

            elif type == "class" or type == "CLASS" or type=="Class":
                elem = self.driver.find_element_by_class_name(value)

            elif type == "link_text" or type == "LINK_TEXT" or type=="Link_text":
                elem = self.driver.find_element_by_link_text(value)

            elif type == "xpath" or type == "XPATH" or type=="Xpath":
                elem = self.driver.find_element_by_xpath(value)

            elif type == "css" or type == "CSS" or type=="Css":
                elem = self.driver.find_element_by_css_selector(value)
            else:
                raise NameError("Please correct the type in function parameter")
        except Exception:
            raise ValueError("No such element found"+ str(element))
        return elem

    def findElements(self,element):
        '''
        Find elements

        element is a set with format (identifier type, value), e.g. ('id','username')

        Usage:
        self.findElements(element)
        '''
        try:
            type = element[0]
            value = element[1]
            if type == "id" or type == "ID" or type=="Id":
                elem = self.driver.find_elements_by_id(value)

            elif type == "name" or type == "NAME" or type=="Name":
                elem = self.driver.find_elements_by_name(value)

            elif type == "class" or type == "CLASS" or type=="Class":
                elem = self.driver.find_elements_by_class_name(value)

            elif type == "link_text" or type == "LINK_TEXT" or type=="Link_text":
                elem = self.driver.find_elements_by_link_text(value)

            elif type == "xpath" or type == "XPATH" or type=="Xpath":
                elem = self.driver.find_elements_by_xpath(value)

            elif type == "css" or type == "CSS" or type=="Css":
                elem = self.driver.find_elements_by_css_selector(value)
            else:
                raise NameError("Please correct the type in function parameter")
        except Exception:
            raise ValueError("No such element found"+ str(element))
        return elem

    def open(self,url):
        '''
        Open web url

        Usage:
        self.open(url)
        '''
        if url != "":
            self.driver.get(url)
        else:
            raise ValueError("please provide a base url")

    def type(self,element,text):
        '''
        Operation input box.

        Usage:
        self.type(element,text)
        '''
        element.send_keys(text)

    
    def enter(self,element):
        '''
        Keyboard: hit return

        Usage:
        self.enter(element)
        '''
        element.send_keys(Keys.RETURN)
    

    def click(self,element):
        '''
        Click page element, like button, image, link, etc.
        '''
        element.click()


    def quit(self):
        '''
        Quit webdriver
        '''
        self.driver.quit()


    def getAttribute(self, element, attribute):
        '''
        Get element attribute

        '''
        return element.get_attribute(attribute)

    def getText(self, element):
        '''
        Get text of a web element

        '''
        return element.text

    def getTitle(self):
        '''
        Get window title
        '''
        return self.driver.title

    def getCurrentUrl(self):
        '''
        Get current url
        '''
        return self.driver.current_url

    def getScreenshot(self,targetpath):
        '''
        Get current screenshot and save it to target path
        '''
        self.driver.get_screenshot_as_file(targetpath)

    def maximizeWindow(self):
        '''
        Maximize current browser window
        '''
        self.driver.maximize_window()

    def back(self):
        '''
        Goes one step backward in the browser history.
        '''
        self.driver.back()

    def forward(self):
        """
        Goes one step forward in the browser history.
        """
        self.driver.forward()

    def getWindowSize(self):
        """
        Gets the width and height of the current window.
        """
        return self.driver.get_window_size()

    def refresh(self):
        '''
        Refresh current page
        '''
        self.driver.refresh()
        self.driver.switch_to()

    
        

GoogleMainPage:

from BasePage import BasePage

class GoogleMainPage(BasePage):
    """description of class"""
    searchbox = ('ID','lst-ib')

    def __init__(self, browser = 'chrome'):
        super().__init__(browser)
        
    def inputSearchContent(self,searchContent):
        searchBox = self.findElement(self.searchbox)
        self.type(searchBox,searchContent)
        self.enter(searchBox)

Test

所做的改變:

  • 將與Selenium類庫相關(guān)的操作做二次封裝,放在BasePage中,其他子類頁面自動繼承相應(yīng)的操作方法(如findelement,click等等)
  • 封裝了findelement方法,可以根據(jù)頁面元素的(類型,值)進(jìn)行查找,只需要調(diào)用一個方法findelement(s),而不需要針對不同的類型調(diào)用不同的find方法(fine_element_by_xxxx())
  • 子類頁面不需要引用selenium的類庫,書寫更加簡單易讀
  • 測試用例中也不需要引用selenium的任何類庫,簡單易讀
?現(xiàn)在我也找了很多測試的朋友,做了一個分享技術(shù)的交流群,共享了很多我們收集的技術(shù)文檔和視頻教程。
如果你不想再體驗自學(xué)時找不到資源,沒人解答問題,堅持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動化,性能,安全,測試開發(fā)等等方面有一定建樹的技術(shù)大牛
分享他們的經(jīng)驗,還會分享很多直播講座和技術(shù)沙龍
可以免費(fèi)學(xué)習(xí)!劃重點!開源的!?。?qq群號:485187702【暗號:csdn11】

最后感謝每一個認(rèn)真閱讀我文章的人,看著粉絲一路的上漲和關(guān)注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走!?希望能幫助到你!【100%無套路免費(fèi)領(lǐng)取】

基于Selenium的Web自動化框架,selenium,軟件測試,程序員,接口測試,自動化測試,測試工程師

基于Selenium的Web自動化框架,selenium,軟件測試,程序員,接口測試,自動化測試,測試工程師文章來源地址http://www.zghlxwxcb.cn/news/detail-848312.html

到了這里,關(guān)于基于Selenium的Web自動化框架的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Selenium+Python的web自動化測試框架詳解

    目錄 一、什么是Selenium? 二、自動化測試框架 三、自動化框架的設(shè)計和實現(xiàn) 四、需要改進(jìn)的模塊 五、總結(jié) Selenium是一個基于瀏覽器的自動化測試工具,它提供了一種跨平臺、跨瀏覽器的端到端的web自動化解決方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selen

    2024年02月09日
    瀏覽(29)
  • 基于Selenium+Python的web自動化測試框架_pythonselenium框架

    基于Selenium+Python的web自動化測試框架_pythonselenium框架

    主要負(fù)責(zé)執(zhí)行用例后的生成報告,一般以HTML格式居多,信息主要是用例執(zhí)行情況。另外還可以配置發(fā)送郵件功能。 4、log模塊 主要用來記錄用例執(zhí)行情況,以便于高效的調(diào)查用例失敗信息以及追蹤用例執(zhí)行情況。 三、自動化框架的設(shè)計和實現(xiàn) 1、需求分析 首先我們的測試對

    2024年04月17日
    瀏覽(32)
  • 基于Selenium的Web UI自動化測試框架開發(fā)實戰(zhàn)

    基于Selenium的Web UI自動化測試框架開發(fā)實戰(zhàn)

    1、自研自動化測試框架 首先進(jìn)行需求分析。概要設(shè)計包括以下三大模塊: 公共函數(shù)庫模塊(包括可復(fù)用函數(shù)庫、日志管理、報表管理及發(fā)送郵件管理); 測試用例倉庫模塊(具體用例的相關(guān)管理); 可視化頁面管理模塊(單獨(dú)針對Web頁面進(jìn)行抽象,封裝頁面元素和操作方

    2024年01月20日
    瀏覽(115)
  • Selenium Web自動化測試——基于unittest框架的PO設(shè)計模式

    Selenium Web自動化測試——基于unittest框架的PO設(shè)計模式

    ??? 交流討論: 歡迎加入我們一起學(xué)習(xí)! ?? 資源分享 : 耗時200+小時精選的「軟件測試」資料包 ??? 教程推薦: 火遍全網(wǎng)的《軟件測試》教程?? ?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正! 前面一直在講接口自動化測試框架與案例分享,很少講Selenium這個We

    2024年03月21日
    瀏覽(93)
  • Selenium:Web自動化框架

    Selenium(Web Browser Automation)的初衷是Web應(yīng)用自動化測試。Selenium還廣泛應(yīng)用于爬蟲,爬蟲需要讓瀏覽器自動運(yùn)行網(wǎng)址來獲取我們需要的內(nèi)容 Selenium不是單個軟件,它是由一系列的工具組成 Selenium庫支持多種編程語言:Python、Java等,支持多種瀏覽器:Chrome、Firefox、Edge等,支持

    2024年02月07日
    瀏覽(23)
  • Selenium Web自動化測試框架實踐

    Selenium Web自動化測試框架實踐

    目錄 ? ? ? ?前言: 項目背景 功能實現(xiàn) 項目架構(gòu) 瀏覽器driver定義 用例運(yùn)行前后的環(huán)境準(zhǔn)備工作 工具方法模塊 Pageobject頁面對象封裝 執(zhí)行測試用例 ? ? ? ?前言: ? ? ? ? ?Selenium是一個基于Web的自動化測試框架,可以通過模擬用戶在瀏覽器上的操作,來自動化地測試Web應(yīng)

    2024年02月10日
    瀏覽(28)
  • WEB自動化測試(selenium工具)框架、面試題

    WEB自動化測試(selenium工具)框架、面試題

    ? ? ? ? ? ? 讓程序員代替人為去驗證web項目功能的過程 ? ???1)需求變動不頻繁 測試腳本的穩(wěn)定性決定了自動化測試的維護(hù)成本。如果軟件需求變動過于頻繁,測試人員需要根據(jù)變動的需求來更新測試用例以及相關(guān)的測試腳本,而腳本的維護(hù)本身就是一個代碼開發(fā)的過程,

    2024年02月03日
    瀏覽(32)
  • Python+selenium,輕松搭建 Web 自動化測試框架

    Python+selenium,輕松搭建 Web 自動化測試框架

    在程序員的世界中,一切重復(fù)性的工作,都應(yīng)該通過程序自動執(zhí)行。 「自動化測試」就是一個最好的例子。 隨著互聯(lián)網(wǎng)應(yīng)用開發(fā)周期越來越短,迭代速度越來越快,只會點點點,不懂開發(fā)的手工測試,已經(jīng)無法滿足如今的業(yè)務(wù)要求,只能被企業(yè)逐步裁員淘汰。 「自動化測試

    2024年02月10日
    瀏覽(28)
  • selenium+python做web端自動化測試框架實戰(zhàn)

    selenium+python做web端自動化測試框架實戰(zhàn)

    最近受到萬點暴擊,由于公司業(yè)務(wù)出現(xiàn)問題,工作任務(wù)沒那么繁重,有時間摸索selenium+python自動化測試,結(jié)合網(wǎng)上查到的資料自己編寫出適合web自動化測試的框架,由于本人也是剛剛開始學(xué)習(xí)python,這套自動化框架目前已經(jīng)基本完成了所以總結(jié)下編寫的得失,便于以后回顧溫

    2024年02月14日
    瀏覽(27)
  • Python + Selenium,分分鐘搭建 Web 自動化測試框架!

    Python + Selenium,分分鐘搭建 Web 自動化測試框架!

    在程序員的世界中,一切重復(fù)性的工作,都應(yīng)該通過程序自動執(zhí)行。 「自動化測試」就是一個最好的例子。 隨著互聯(lián)網(wǎng)應(yīng)用開發(fā)周期越來越短,迭代速度越來越快,只會點點點,不懂開發(fā)的手工測試,已經(jīng)無法滿足如今的業(yè)務(wù)要求,只能被企業(yè)逐步裁員淘汰。 「自動化測試

    2024年02月02日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包