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

UI自動(dòng)化之關(guān)鍵字驅(qū)動(dòng)

這篇具有很好參考價(jià)值的文章主要介紹了UI自動(dòng)化之關(guān)鍵字驅(qū)動(dòng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

關(guān)鍵字驅(qū)動(dòng)框架:將每一條測(cè)試用例分成四個(gè)不同的部分

  • 測(cè)試步驟(Test Step):一個(gè)測(cè)試步驟的描述或者是測(cè)試對(duì)象的一個(gè)操作說(shuō)明
  • 測(cè)試步驟中的對(duì)象(Test Object):指頁(yè)面的對(duì)象或者元素
  • 對(duì)象執(zhí)行的動(dòng)作(Action):頁(yè)面操作的動(dòng)作
  • 執(zhí)行對(duì)象所需要的數(shù)據(jù)(Test Data):任何對(duì)象操作時(shí)所需要的值

例如:登錄163郵箱,步驟分為:

  1. 打開(kāi)瀏覽器
  2. 輸入url
  3. 切換iframe
  4. 輸入用戶名
  5. 輸入密碼
  6. 點(diǎn)擊登錄

1:創(chuàng)建excel文件,使用excel文件來(lái)存放測(cè)試用例及測(cè)試步驟,excel內(nèi)容如下:

login的sheet頁(yè)中,描述了測(cè)試步驟,測(cè)試步驟中的對(duì)象可以分為:測(cè)試對(duì)象的定位方式以及定位方式表達(dá)值:

UI自動(dòng)化之關(guān)鍵字驅(qū)動(dòng),UI自動(dòng)化,自動(dòng)化,selenium,python

從excel文件中,可以看到,每一個(gè)步驟我們要執(zhí)行的動(dòng)作是什么,例如打開(kāi)瀏覽器,我們需要定義一個(gè)open_browse方法,再讀取excel文件的內(nèi)容時(shí),程序才知道要怎么做。因此我們需要為每個(gè)執(zhí)行動(dòng)作定義一個(gè)方法。

再在excel中增加一個(gè)sheet頁(yè),從來(lái)存放測(cè)試用例,如index:

UI自動(dòng)化之關(guān)鍵字驅(qū)動(dòng),UI自動(dòng)化,自動(dòng)化,selenium,python

2:搭建項(xiàng)目框架,只是簡(jiǎn)單的實(shí)現(xiàn)關(guān)鍵字驅(qū)動(dòng),需要的其他內(nèi)容可以再往框架中加。

項(xiàng)目結(jié)構(gòu)目錄:

UI自動(dòng)化之關(guān)鍵字驅(qū)動(dòng),UI自動(dòng)化,自動(dòng)化,selenium,python

3:接下來(lái)我們來(lái)看一下各個(gè)文件夾下py文件的內(nèi)容

首先是Util文件夾下,封裝的查找元素控件的工具類(lèi)find_ele.py文件

# find_ele.py
from selenium.webdriver.support.wait import WebDriverWait


def find_element(driver, location_type, location_express):
    '''查找控件元素'''
    try:
        driver = WebDriverWait(driver, 20).until(lambda driver:driver.find_element(location_type, location_express))
        return driver
    except Exception as e:
        raise e

接下來(lái)我們就要在Util文件下,封裝讀取excel文件內(nèi)容方法的excel_parse.py文件,再封裝該方法前,需要在Setting文件下,創(chuàng)建Config.py文件,用來(lái)獲取文件路徑。

Config.py文件內(nèi)容如下:

# Config.py
import os

Base_Dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# 測(cè)試數(shù)據(jù)文件
Test_Data_Path = os.path.join(Base_Dir, 'TestData')

excel_parse.py文件內(nèi)容如下:

# excel_parse.py
from Setting.Config import Test_Data_Path
from openpyxl import load_workbook

class ExcelParse:

    def __init__(self):
        self.workbook = None
        self.sheet = None

    def load_workbook(self, filename):
        '''加載文件'''
        try:
            self.workbook = load_workbook(filename)
        except Exception as e:
            raise e

    def get_sheet(self, sheetname):
        '''獲取sheet頁(yè)'''
        try:
            self.sheet = self.workbook[sheetname]
        except Exception as e:
            raise e

    def get_row_num(self):
        '''返回行數(shù)'''
        return self.sheet.max_row

    def get_col_num(self):
        '''返回列數(shù)'''
        return self.sheet.max_column

    def get_cell_value(self, row, col):
        '''返回某一單元格的值'''
        return self.sheet.cell(row=row, column=col).value

    def get_row_value(self, row):
        '''返回某一行的值'''
        try:
            col = self.get_col_num()
            data = []
            for i in range(1, col+1):
                data.append(self.get_cell_value(row, i))
            return data
        except Exception as e:
            raise e

    def write_cell(self, row, col, filename, content):
        '''單元格賦值'''
        try:
            self.sheet.cell(row=row, column=col, value=content)
            self.workbook.save(filename)

        except Exception as e:
            raise e


if __name__ == '__main__':
    execl = ExcelParse()
    execl.load_workbook(Test_Data_Path + '/login.xlsx')
    execl.get_sheet('login')
    res = execl.get_row_value(2)
    print(res)

然后就需要定義測(cè)試步驟中的執(zhí)行動(dòng)作的方法,在Util文件夾下,創(chuàng)建elementAction.py文件,內(nèi)容如下:

# elementAction.py
from selenium import webdriver
from Util.find_ele import find_element

driver = None

def open_browse(browser_name, *args):
    '''打開(kāi)瀏覽器'''
    global driver
    try:
        if browser_name.lower() == 'chrome':
            driver = webdriver.Chrome()
        elif browser_name.lower() == 'firefox':
            driver = webdriver.Firefox()
        else:
            driver = webdriver.Ie()
    except Exception as e:
        raise e

def get_url(url, *args):
    '''打開(kāi)網(wǎng)址'''
    try:
        driver.get(url)
    except Exception as e:
        raise e


def max_window(*args):
    '''窗口最大化'''
    try:
        driver.maximize_window()
    except Exception as e:
        raise e

def switch_frame(location_type, location_express, *args):
    '''切換iframe'''
    try:
        frame = find_element(driver, location_type, location_express)
        driver.switch_to.frame(frame)
    except Exception as e:
        raise e

def input_content(location_type, location_express, content, *args):
    '''定位輸入框,輸入內(nèi)容'''
    try:
        find_element(driver, location_type, location_express).send_keys(content)
    except Exception as e:
        raise e


def click(location_type, location_express, *args):
    '''點(diǎn)擊操作'''
    try:
        find_element(driver, location_type, location_express).click()
    except Exception as e:
        raise e

def assert_title(title, *args):
    '''斷言title是否正確'''
    try:
        assert title in driver.title
    except Exception as e:
        raise e


def close_browse():
    '''關(guān)閉瀏覽器'''
    driver.quit()


if __name__ == '__main__':
    open_browse('chrome')
    get_url('http://mail.163.com')
    max_window()
    switch_frame('tag name', 'iframe')
    input_content('name', 'email', 'test123')
    input_content('name', 'password', 'a123456')
    click('id', 'dologin')
    assert_title('網(wǎng)易')

然后將從excel文件中讀取出來(lái)的內(nèi)容,拼接成要執(zhí)行的方法。在Util文件夾下,創(chuàng)建common.py文件。

# common.py
def generate_method_express(location_type, location_express, key_word, operate_data):
    # location_type, location_express為空,operate_data不為空
    if key_word and operate_data and location_type is None and location_express is None:
        # 判斷操作值的類(lèi)型
        if isinstance(operate_data, int):
            method_express = key_word + '(' + str(operate_data) + ')'
        else:
            method_express = key_word + "('" + operate_data + "')"
        # print(method_express)
    # 只有關(guān)鍵字有值,其他的都為空,比如:max_window, close_browse
    elif key_word and operate_data is None and location_type is None and location_express is None:
        method_express = key_word + '()'
        # print(method_express)
    # location_type,location_express不為空,operate_data為空
    elif key_word and location_type and location_express and operate_data is None:
        method_express = key_word + "('" + location_type + "','" + location_express + "')"
        # print(method_express)
    # 都不為空
    else:
        if isinstance(operate_data, int):
            method_express = key_word + "('" + location_type + "','" + location_express + "'," + str(operate_data) + ")"
        else:
            method_express = key_word + "('" + location_type + "','" + location_express + "','" + operate_data + "')"
        print(method_express)
    return method_express

之后,就是編寫(xiě)執(zhí)行測(cè)試用例了。

在TestScript文件夾下,創(chuàng)建test_login.py文件

# test_login.py
from Util.excel_parse import ExcelParse
from Setting.Config import Test_Data_Path
from Util.elementAction import *
from Util.common import generate_method_express

excel = ExcelParse()
# 加載login.xlsx文件
excel.load_workbook(Test_Data_Path + '/login.xlsx')

def test_run():
    try:
        # 獲取indexsheet頁(yè)
        excel.get_sheet('index')
        # 獲取index的行數(shù)
        rows = excel.get_row_num()
        for i in range(2, rows+1):
            # 判斷是否要執(zhí)行
            is_run = excel.get_cell_value(i, 4).lower()
            if is_run == 'y':
                # 獲取要執(zhí)行的sheet頁(yè)名稱(chēng)
                case_step_sheet = excel.get_cell_value(i, 3)
                # 切換到要執(zhí)行的sheet頁(yè)
                excel.get_sheet(case_step_sheet)
                # 獲取要執(zhí)行的步驟數(shù)
                step_num = excel.get_row_num()
                # print(step_num)
                success_num = 0       # 記錄成功的步驟數(shù)
                for j in range(2, step_num+1):
                    # 獲取步驟描述
                    step_desc = excel.get_cell_value(j, 1)
                    # 定位方式
                    location_type = excel.get_cell_value(j, 2)
                    # 定位方式表達(dá)值
                    location_express = excel.get_cell_value(j, 3)
                    # 執(zhí)行動(dòng)作
                    key_word = excel.get_cell_value(j, 4)
                    # 執(zhí)行數(shù)據(jù)
                    operate_data = excel.get_cell_value(j, 5)
                    # print(step_desc, location_type, location_express,key_word, operate_data)
                    method_express = generate_method_express(location_type, location_express, key_word, operate_data)
                    try:
                        # 運(yùn)行函數(shù),eval(),將字符串str當(dāng)成有效的表達(dá)式來(lái)求值并返回計(jì)算結(jié)果
                        eval(method_express)
                    except Exception as e:
                        raise e
                    else:
                        success_num += 1
                # 切換sheet頁(yè)到index
                excel.get_sheet('index')
                if success_num == step_num - 1:
                    # 成功的步驟數(shù)等于步驟sheet頁(yè)的行數(shù)減1,表示測(cè)試執(zhí)行成功,寫(xiě)入成功
                    excel.write_cell(i, 5, Test_Data_Path + '/login.xlsx', 'pass')
                else:
                    # 寫(xiě)入失敗
                    excel.write_cell(i, 5, Test_Data_Path + '/login.xlsx', 'Fall')
    except Exception as e:
        raise

執(zhí)行test_login.py文件,關(guān)鍵字驅(qū)動(dòng)就實(shí)現(xiàn)了。這只是簡(jiǎn)單的實(shí)現(xiàn)了關(guān)鍵字驅(qū)動(dòng),了解了關(guān)鍵字驅(qū)動(dòng)應(yīng)該是什么樣的,日志、測(cè)試報(bào)告、執(zhí)行入口可以自己再添加,上面的代碼也可以再進(jìn)行優(yōu)化。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-689024.html

到了這里,關(guān)于UI自動(dòng)化之關(guān)鍵字驅(qū)動(dòng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Robot Framweork之UI自動(dòng)化測(cè)試---Selenium2Library常用關(guān)鍵字

    Robot Framweork之UI自動(dòng)化測(cè)試---Selenium2Library常用關(guān)鍵字

    在項(xiàng)目實(shí)際自動(dòng)化測(cè)試過(guò)程中,主要用到了Selenium2Library庫(kù)里的一些和內(nèi)置包BuiltIn的,今天我們就來(lái)分享下Selenium2Library常用。 我們把操作主要分為六大類(lèi): 一)瀏覽器操作 二)文本輸入 三)點(diǎn)擊操作 四)選擇/取消選擇 五)檢查點(diǎn) 六)其他 插播一個(gè)小

    2024年02月14日
    瀏覽(25)
  • 自動(dòng)化測(cè)試之?dāng)?shù)據(jù)驅(qū)動(dòng)與關(guān)鍵字驅(qū)動(dòng)

    自動(dòng)化測(cè)試之?dāng)?shù)據(jù)驅(qū)動(dòng)與關(guān)鍵字驅(qū)動(dòng)

    目錄 1.錄制/回放的神話 2.數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試框架 3.驅(qū)動(dòng)的自動(dòng)化測(cè)試 ?初次接觸自動(dòng)化測(cè)試時(shí),對(duì)數(shù)據(jù)驅(qū)動(dòng)和驅(qū)動(dòng)不甚理解,覺(jué)得有點(diǎn)故弄玄須,不就是參數(shù)和函數(shù)其嘛!其實(shí)其也體現(xiàn)了測(cè)試所不同與開(kāi)發(fā)的一些特點(diǎn)(主要指系統(tǒng)測(cè)試),以及和對(duì)技術(shù)發(fā)展

    2024年02月17日
    瀏覽(24)
  • 自動(dòng)化測(cè)試框架之關(guān)鍵字驅(qū)動(dòng)和數(shù)據(jù)驅(qū)動(dòng)

    文章架構(gòu) 1.什么是驅(qū)動(dòng) 2.什么是數(shù)據(jù)驅(qū)動(dòng) 3.數(shù)據(jù)驅(qū)動(dòng)和驅(qū)動(dòng)的關(guān)系 4.數(shù)據(jù)驅(qū)動(dòng)和驅(qū)動(dòng)結(jié)合進(jìn)行測(cè)試的實(shí)施流程 5.案例 1.什么是驅(qū)動(dòng)? 驅(qū)動(dòng)是自動(dòng)化測(cè)試框架設(shè)計(jì)的核心內(nèi)容,可以解決代碼冗余、可讀性、維護(hù)性、代碼復(fù)用性等問(wèn)題。 比如,

    2024年02月14日
    瀏覽(21)
  • 如何搭建關(guān)鍵字驅(qū)動(dòng)自動(dòng)化測(cè)試框架?

    如何搭建關(guān)鍵字驅(qū)動(dòng)自動(dòng)化測(cè)試框架?

    前言 那么這篇文章我們將了解驅(qū)動(dòng)測(cè)試又是如何驅(qū)動(dòng)自動(dòng)化測(cè)試完成整個(gè)測(cè)試過(guò)程的。驅(qū)動(dòng)框架是一種功能自動(dòng)化測(cè)試框架,它也被稱(chēng)為表格驅(qū)動(dòng)測(cè)試或者基于動(dòng)作字的測(cè)試。驅(qū)動(dòng)的框架的基本工作是將測(cè)試用例分成四個(gè)不同的部分。首先是測(cè)試步驟(

    2024年02月11日
    瀏覽(26)
  • 如何搭建關(guān)鍵字驅(qū)動(dòng)自動(dòng)化測(cè)試框架?這絕對(duì)是全網(wǎng)天花板的教程

    如何搭建關(guān)鍵字驅(qū)動(dòng)自動(dòng)化測(cè)試框架?這絕對(duì)是全網(wǎng)天花板的教程

    目錄 1. 驅(qū)動(dòng)自動(dòng)化測(cè)試介紹 2. 搭建驅(qū)動(dòng)自動(dòng)化測(cè)試框架 步驟1:選擇測(cè)試工具 步驟2:定義測(cè)試用例 步驟3:編寫(xiě)測(cè)試驅(qū)動(dòng)引擎 步驟4:實(shí)現(xiàn)測(cè)試庫(kù) 步驟5:執(zhí)行測(cè)試 3. 實(shí)現(xiàn)驅(qū)動(dòng)自動(dòng)化測(cè)試的關(guān)鍵技術(shù) 技術(shù)1:測(cè)試工具 技術(shù)2:測(cè)試驅(qū)動(dòng)引擎的編寫(xiě) 技

    2023年04月20日
    瀏覽(24)
  • Python Selenium 關(guān)鍵字驅(qū)動(dòng)

    目錄 項(xiàng)目目錄結(jié)構(gòu) ?action目錄 config目錄 exceptionpictures目錄 log目錄 testCases目錄

    2024年02月05日
    瀏覽(90)
  • 用Python編寫(xiě)UI自動(dòng)化用例第一步from selenium import webdriver,即導(dǎo)入第三方驅(qū)動(dòng)包時(shí)報(bào)錯(cuò),高效解決辦法,報(bào)錯(cuò)問(wèn)題已解決

    用Python編寫(xiě)UI自動(dòng)化用例第一步from selenium import webdriver,即導(dǎo)入第三方驅(qū)動(dòng)包時(shí)報(bào)錯(cuò),高效解決辦法,報(bào)錯(cuò)問(wèn)題已解決

    問(wèn)題:在PyCharm中新建一個(gè)文件,py01_test_01.py文件。編寫(xiě)UI自動(dòng)化用例的第一步就是導(dǎo)入驅(qū)動(dòng)(from selenium import webdriver),在已經(jīng)安裝selenium的情況下(pip install selenium==3.141.0),執(zhí)行的時(shí)候還是報(bào)錯(cuò)。如下圖: ? ? 原因排查過(guò)程:從報(bào)錯(cuò)信息,錯(cuò)誤信息為沒(méi)有找到selenium。首先查

    2024年02月12日
    瀏覽(20)
  • Selenium 自動(dòng)化 —— 使用WebDriverManager自動(dòng)下載驅(qū)動(dòng)

    Selenium 自動(dòng)化 —— 使用WebDriverManager自動(dòng)下載驅(qū)動(dòng)

    上一篇文章 入門(mén)和 Hello World 實(shí)例 中,我們提供了一個(gè)最簡(jiǎn)單的 Selenium 上手的例子。 但是某一天,突然發(fā)現(xiàn)相同的代碼居然運(yùn)行報(bào)錯(cuò)了。這是怎么回事呢? 日志中其實(shí)提示的很明顯了:Chrome瀏覽器和Chrome WebDriver的版本不匹配。當(dāng)前WebDriver只支持Chrome瀏覽器版本114. 先檢查一

    2024年03月26日
    瀏覽(29)
  • Python Selenium UI自動(dòng)化測(cè)試_python 自動(dòng)化ui測(cè)試

    Python Selenium UI自動(dòng)化測(cè)試_python 自動(dòng)化ui測(cè)試

    2.2 安裝selenium pip install selenium pip install selenium==2.53.0 2.3 下載webdriver驅(qū)動(dòng) 以chrome瀏覽器為例 查看chrome瀏覽器版本:在地址欄輸入 chrome://version chromedriver下載地址:http://chromedriver.storage.googleapis.com/index.html 下載與瀏覽器版本對(duì)應(yīng)的chrome driver 將下載好的chrome driver 解壓,并放至到

    2024年04月14日
    瀏覽(27)
  • 為什么UI自動(dòng)化難做?—— 關(guān)于Selenium UI自動(dòng)化的思考

    為什么UI自動(dòng)化難做?—— 關(guān)于Selenium UI自動(dòng)化的思考

    在快速迭代的產(chǎn)品、團(tuán)隊(duì)中,UI自動(dòng)化通常是一件看似美好,實(shí)際“雞肋”(甚至絕大部分連雞肋都算不上)的工具。原因不外乎以下幾點(diǎn): 通常只是聽(tīng)說(shuō)過(guò),就想去搞UI自動(dòng)化的團(tuán)隊(duì),心里都認(rèn)為「UI自動(dòng)化」等于「減少人工 提高效率」,這固然沒(méi)什么大錯(cuò),但是他們也會(huì)

    2024年02月03日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包