1. 程式人生 > 實用技巧 >Selenium模組化驅動測試介紹和例項

Selenium模組化驅動測試介紹和例項

線性模型介紹:

線性模型雖然每個用例都可以拿來獨立執行,但是用例之間重複程式碼多,開發、維護成本高。

其實把重複的操作程式碼封裝成獨立的公共模組,當用例執行時需要用到這部分,直接呼叫即可,這就是模組驅動的方式。

比如登入系統、退出系統、收藏等等。

如下例項(程式碼中包含我當前用的一些內部地址和賬號,做了隱藏,請知悉。)

登入和註冊程式碼如下:

# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/11 9:13
# @Author : Gengwu
# @FileName: user_login.py
# @Software: PyCharm
from selenium import webdriver from time import sleep from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.alert import Alert driver=webdriver.Chrome() driver.get('https://qa-***.com/') driver.maximize_window() #清除使用者名稱的框,防止自動帶入 driver.find_element_by_id('
account').clear() driver.find_element_by_id('account').send_keys('admin') #清除密碼的框,防止自動帶入 driver.find_element_by_id('password').clear() driver.find_element_by_id('password').send_keys('admin') #點選登入按鈕 driver.find_element_by_css_selector('#app > div > div > div.content > form > div.login-form-button-item > button
').click() #copy到selector sleep(2) #通過懸浮框定位到退出登入 above=driver.find_element_by_class_name('author') ActionChains(driver).move_to_element(above).perform() driver.find_element_by_link_text('退出登入').click() sleep(2) #點選彈框的確定按鈕 driver.find_element_by_css_selector('.ant-modal-body .ant-btn-primary').click() sleep(2) driver.quit()

將登入的操作封裝到login()函式中,將退出的操作封裝到logout()函式中,用到時呼叫即可

新建:Loginclass.py

程式碼如下:

# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/12 16:48
# @Author : Gengwu
# @FileName: LoginClass.py
# @Software: PyCharm

from  selenium import  webdriver
from  time import  sleep
from selenium.webdriver.common.action_chains import ActionChains

class Login(): #定義一個類,類下面封裝兩個方法,一個登入,一個退出
    def user_login(self,driver):
        # 清除使用者名稱的框,防止自動帶入
        driver.find_element_by_id('account').clear()
        driver.find_element_by_id('account').send_keys('admin')

        # 清除密碼的框,防止自動帶入
        driver.find_element_by_id('password').clear()
        driver.find_element_by_id('password').send_keys('admin')

        # 點選登入按鈕
        driver.find_element_by_css_selector(
            '#app > div > div > div.content > form > div.login-form-button-item > button').click()  # copy到selector
        sleep(2)

    def user_logout(self,driver):
        # 通過懸浮框定位到退出登入
        above = driver.find_element_by_class_name('author')
        ActionChains(driver).move_to_element(above).perform()
        driver.find_element_by_link_text('退出登入').click()

        sleep(2)
        # 點選彈框的確定按鈕
        driver.find_element_by_css_selector('.ant-modal-body .ant-btn-primary').click()
        sleep(2)

if __name__=='__main__': #除錯
    driver = webdriver.Chrome()
    driver.get('https://qa-***.com/')
    driver.maximize_window()
    sleep(3)

    Login().user_login(driver)
    sleep(2)
    Login().user_logout(driver)
    sleep(3)

    driver.quit()
Call_login.py
# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/13 11:01
# @Author : Gengwu
# @FileName: Call_login.py
# @Software: PyCharm

from LoginClass import *
from selenium import webdriver
from time import sleep

driver=webdriver.Chrome()
driver.get('https://qa***.com/')
driver.maximize_window()
driver.implicitly_wait(10) #設定一個隱式等待時間

Login().user_login(driver)
sleep(3)
Login().user_logout(driver)
sleep(3)

driver.quit()

現在是將複用的程式碼獨立儲存,使用時匯入呼叫即可.

三個py檔案已經要在同一個資料夾下

這樣的話就實現了封裝和呼叫。

以上如果有問題歡迎隨時溝通和討論!

轉載請告知!謝謝!

Best Regards! Make a little progress every day!