Web自動化測試進階

Selenium自動化測試框架

1.什么是框架?
框架(framework)是一個框子——指其約束性,也是一個架子——指其支撐性。是一個基本概念上的結(jié)構(gòu),用于去解決或者處理復雜的問題。

框架是整個或部分系統(tǒng)的可重用設(shè)計,表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實例間交互的方法;另一種定義認為,框架是可被應(yīng)用開發(fā)者定制的應(yīng)用骨架。前者是從應(yīng)用方面而后者是從目的方面給出的定義。

框架,其實就是某種應(yīng)用的半成品,就是一組組件,供你選用完成你自己的系統(tǒng)。簡單說就是使用別人搭好的舞臺,你來做表演。

2.為什么使用框架?
1)自己從頭實現(xiàn)太復雜

2)使用框架能夠更專注于業(yè)務(wù)邏輯,加快開發(fā)速度

3)框架的使用能夠處理更多細節(jié)問題

4)使用人數(shù)多,穩(wěn)定性,擴展性好

Selenium工作原理

webdriver工作原理

image.png

selenium環(huán)境搭建

.材料:

1)python3.7

2)Firefox35(大于43)

3)selenium2框架
    穩(wěn)定版 2.48.0    (pip install selenium==2.48.0)

4)瀏覽器驅(qū)動     
    chrome
    ie

Selenium IDE

什么是Selenium-IDE?

Selenium的IDE(集成開發(fā)環(huán)境)是一個易于使用的Firefox插件,用于開發(fā)Selenium測試案例。它提供了一個圖形用戶界面,用于記錄使用Firefox瀏覽器,用來學習和使用Selenium用戶操作,但它只能用于只用Firefox瀏覽器不支持其它瀏覽器
1.環(huán)境安裝
firefox官網(wǎng)
2.IDE功能簡介
1.文件:創(chuàng)建、打開和保存測試案例和測試案例集。編輯:復制、粘貼、刪除、撤銷和選擇測試案例中的所有命令。Options : 用于設(shè)置seleniunm IDE。
2.用來填寫被測網(wǎng)站的地址。
3.速度控制:控制案例的運行速度。
4.運行所有:運行一個測試案例集中的所有案例。
5.運行:運行當前選定的測試案例。
6.暫停/恢復:暫停和恢復測試案例執(zhí)行。
7.單步:可以運行一個案例中的一行命令。
8.錄制:點擊之后,開始記錄你對瀏覽器的操作。
9.案例集列表。
10.測試腳本;table標簽:用表格形式展現(xiàn)命令及參數(shù)。source標簽:用原始方式展現(xiàn),默認是HTML語言格式,也可以用其他語言展示。
11.查看腳本運行通過/失敗的個數(shù)。
12.當選中前命令對應(yīng)參數(shù)。
13.日志/參考/UI元素/Rollup


image.png

Selenium API基礎(chǔ)

1.瀏覽器驅(qū)動對象

1)庫的導入
    from selenium import  webdriver

2)創(chuàng)建瀏覽器對象
    
    driver = webdriver.xxx()
    
    使用dir(driver)查看方法

3)瀏覽器尺寸相關(guān)操作
    
    maximize_window()       最大化
    
    get_window_size()       獲取瀏覽器尺寸

    set_window_size()       設(shè)置瀏覽器尺寸
4)瀏覽器的關(guān)閉操作
    
    close()         關(guān)閉當前標簽/窗口

    quit()          關(guān)閉所有標簽/窗口

頁面請求操作

    driver.get(url)     請求某個url對應(yīng)的響應(yīng)
    refresh()               刷新頁面操作
    back()              回退到之前的頁面
    forward()               前進到之后的頁面

獲取斷言信息

0)什么是斷言?
    斷言是編程術(shù)語,表示為一些布爾表達式,程序員相信在程序中的某個特定點該表達式值為真,可以在任何時候啟用和禁用斷言驗證,因此可以在測試時啟用斷言而在部署時禁用斷言。

1)獲取斷言信息的操作

    current_url             獲取當前訪問頁面url

    title               獲取當前瀏覽器標題

    get_screenshot_as_png()           保存圖片

    get_screenshot_as_file(file)       直接保存
    
    page_source               網(wǎng)頁源碼

元素的定位

1)元素定位方法的分類(調(diào)用方式):
    
    1.直接調(diào)用型(推薦方式)
        driver.find_element_by_xxx(value)
    
    2.使用By類型(需要導入By)
        from selenium.webdriver.common.by import By
        driver.find_element(By.xxx,value)

2)元素定位方法的分類(按定位方式):


image.png

八種定位方式的示例:

    1. driver.find_element_by_xpath(value)
        

    2. driver.find_element_by_css_selector(value)


    3. driver.find_element_by_id(value)
            

    4. driver.find_element_by_name(value)

    5. driver.find_element_by_class_name(value)
        

    6. driver.find_element_by_tag_name(value)

    7. driver.find_element_by_link_text(value)
        

    8. driver.find_element_by_partial_link_text(value)

元素的操作

對元素的相關(guān)操作,一般要先獲取到元素,再調(diào)用相關(guān)方法
element = driver.find_element_by_xxx(value)

1)點擊和輸入

    點擊操作
        element.click()
    
    清空/輸入操作(只能操作可以輸入文本的元素)
        element.clear()         清空輸入框
        element.send_keys(data)     輸入數(shù)據(jù)
    

    案例:
        1.打開百度搜索        2.搜索關(guān)鍵字 selenium
        3.清空            4.搜索python

Selenium API高級

1.多標簽之間的切換
場景:有的時候點擊一個鏈接,新頁面并非由當前頁面跳轉(zhuǎn)過去,而是新開一個頁面打開,這種情況下,計算機需要識別多標簽或窗口的情況。

1)獲取所有窗口的句柄

    handles = driver. window_handles
    調(diào)用該方法會得到一個列表,在selenium運行過程中的每一個窗口都有一個對應(yīng)的值存放在里面。

2)通過窗口的句柄進入的窗口

    driver.switch_to_window(handles[n])
    
    driver.switch_to.window(handles[n])

    通過窗口句柄激活進入某一窗口

多表單切換
在網(wǎng)頁中,表單嵌套是很常見的情況,尤其是在登錄的場景

1)什么是多表單?
    實際上就是使用iframe/frame,引用了其他頁面的鏈接,真正的頁面數(shù)據(jù)并沒有出現(xiàn)在當前源碼中,但是在瀏覽器中我們看到,簡單理解可以使頁面中開了一個窗口顯示另一個頁面


2)處理方法
    
    直接使用id值切換進表單
        driver.switch_to.frame(value)/driver.switch_to_frame(value)

    定位到表單元素,再切換進入
        el = driver.find_element_by_xxx(value)
        driver.switch_to.frame(el)  /driver.switch_to_frame(el)
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容