Selenium數據驅動測試模型和實例

模組驅動的模型雖然解決了腳本的重複問題,但是需要測試不同數據的用例時,模組驅動的方式就不很適合了。 數據驅動就是數據的改變從而驅動自動化測試的執行,最終引起測試結果的改變。 裝載數據的方式可以是列表、字典或是外部文件(txt、csv、xml、excel),目的就是實現數據和腳本的分離。

程式碼實現如下:(文章程式碼url地址為內部地址,我隱藏掉了,你們可以換成其他地址哦)

# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/13 13:46
# @Author : Gengwu
# @FileName: LoginClass_Para.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,username,password):
        # 清除用戶名的框,防止自動帶入
        driver.find_element_by_id('account').clear()
        driver.find_element_by_id('account').send_keys(username)

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

        # 點擊登錄按鈕
        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)

數據驅動調用——實現多個賬戶登錄

# #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/8/13 14:11
# @Author : Gengwu
# @FileName: CallLogin_Para.py
# @Software: PyCharm

from selenium import webdriver
from time import sleep
from LoginClass_Para import *



driver=webdriver.Chrome()
driver.get('//qa***.com/')
driver.maximize_window()
driver.implicitly_wait(10)
sleep(3)

Login().user_login(driver,'admin','admin')
sleep(3)
Login().user_logout(driver)

Login().user_login(driver,'test','123456')
sleep(3)
Login().user_logout(driver)

sleep(3)
driver.quit()

腳本放到同一個文件夾下,就可以試下調用。

以上如果有問題歡迎隨時溝通和交流。

Best Regards!
Make a little progress every day!