論壇系統自動化測試

1、項目背景與測試目標

  1. 系統定位
    論壇系統作為典型的高并發Web應用,需支持用戶注冊、登錄、發帖、評論、私信及個人中心管理等核心功能,是用戶公開交流與信息共享的核心平臺。其穩定性與響應效率直接影響用戶體驗及平臺活躍度。

  2. 測試必要性

    • 功能可靠性:用戶高頻操作(如發帖、回復)需保證流程完整性與數據一致性,避免因功能缺陷導致信息丟失或操作中斷。
    • 性能瓶頸:高并發場景下(如熱門板塊訪問),系統需維持低延遲響應(平均<2秒),并確保資源利用率合理(CPU/內存無溢出)。
    • 用戶體驗:界面易用性、跨瀏覽器兼容性及錯誤處理機制是用戶留存的關鍵因素。

在這里插入圖片描述


2、技術架構與測試挑戰

  1. 系統架構特點

    • 后端:Spring Boot + MyBatis + MySQL集群(主從復制+讀寫分離)。
    • 前端:Bootstrap響應式設計,依賴多瀏覽器兼容。
    • 部署:Nginx負載均衡分發請求至多臺應用服務器。
  2. 測試核心挑戰

    • 場景復雜度:需覆蓋用戶從注冊到互動的完整路徑(正向/逆向操作)。
    • 環境依賴:真實模擬高并發(>1000用戶)及多終端(Chrome/Edge/Firefox)場景。
    • 缺陷隱蔽性:界面邏輯錯誤(如未提示注冊成功)及性能瓶頸(搜索功能無響應)需深度遍歷才能暴露。

3、核心功能模塊與質量要求

模塊功能場景質量風險
用戶注冊信息校驗、協議勾選、重復賬號檢測用戶信息入庫失敗、錯誤提示缺失
用戶登錄憑證驗證、空輸入處理、錯誤反饋安全漏洞(暴力破解)、跳轉邏輯錯誤
帖子交互發帖/回復/私信、內容持久化數據丟失、頁面加載超時、權限控制失效
個人中心信息修改、歷史記錄查看數據更新延遲、頁面元素加載不全

4、測試目標與質量指標

  1. 功能覆蓋
    • 自動化腳本覆蓋核心鏈路(注冊→登錄→發帖→退出)通過率100%
    • 缺陷修復率100%(含界面提示缺失、功能無響應等)。
  2. 兼容性要求
    • 支持Chrome 134+、Edge 131+、Firefox 131+等主流瀏覽器。

5、測試內容

登陸界面
在這里插入圖片描述


在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
注冊界面
在這里插入圖片描述

6、測試代碼

6.1 自動化測試腳本詳解

import os.path
from datetime import datetimeimport webdriver_manager.drivers.chrome
from requests import options
from selenium import webdriver
from selenium.webdriver.ie.service import Service
from webdriver_manager.chrome import ChromeDriverManagerclass Driver:#定義構造函數#聲明變量driver = ""def __init__(self):options = webdriver.ChromeOptions()self.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options)self.driver.maximize_window()#屏幕截圖def getscreenshot(self):diam = datetime.now().strftime("%Y-%m-%d")if not os.path.exists("../images/"+diam):os.mkdir("../images/"+diam)#設置圖片的名稱格式fliename = datetime.now().strftime("%Y-%m-%d-%H%M%S")+".png"self.driver.save_screenshot("../images/"+diam+"/"+fliename)forum = Driver()

核心功能

  1. 初始化瀏覽器

    • 通過 webdriver_manager 自動下載并管理最新版Chrome驅動(無需手動安裝驅動)。
    • 啟動瀏覽器時自動最大化窗口(maximize_window())。
    • 示例:forum = Driver() 會立刻打開一個全屏Chrome窗口。
  2. 智能截圖保存

    • 調用 getscreenshot() 時,會按日期生成文件夾(如 ../images/2025-06-13/)。
    • 截圖文件名包含精確時間(如 2025-06-13-143022.png),避免重復。
    • 示例:forum.getscreenshot() 會保存當前瀏覽器頁面到指定路徑。

代碼關鍵點

# 自動安裝Chrome驅動并啟動瀏覽器
self.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),  # 自動管理驅動options=options
)
# 按日期分類保存截圖
diam = datetime.now().strftime("%Y-%m-%d")  # 當前日期作為文件夾名
fliename = datetime.now().strftime("%Y-%m-%d-%H%M%S") + ".png"  # 時間戳作為文件名
self.driver.save_screenshot("../images/"+diam+"/"+fliename)

設計意圖

  • 復用瀏覽器對象:通過 Driver 類封裝初始化邏輯,避免重復創建瀏覽器實例。
  • 自動化文件管理:日期文件夾 + 時間戳文件名,確保截圖有序存儲。
  • 簡化依賴webdriver_manager 自動處理驅動下載,提升代碼可移植性。

實際應用場景

  1. 自動化測試:在測試用例執行失敗時自動截圖存檔。
  2. 網頁監控:定時對特定頁面截圖,用于內容變更追蹤。
  3. 爬蟲調試:在數據抓取過程中保存頁面快照,便于排查問題。

? 總結:這段代碼是瀏覽器自動化+智能截圖工具,適合需要反復操作瀏覽器并記錄結果的場景(如測試、爬蟲)。通過封裝常用操作,大幅簡化了代碼復雜度。

6.2 登錄功能自動化測試腳本詳解

這個代碼是一個自動化測試腳本,用于測試一個論壇的登錄功能。我來用簡單易懂的方式解釋一下它的工作原理和設計思路:

核心功能概述

這是一個登錄頁面的自動化測試工具:

  1. 可以模擬用戶輸入不同組合的用戶名和密碼
  2. 測試登錄功能的正常情況和各種異常情況
  3. 自動截屏記錄每次測試的結果
  4. 自動驗證系統反饋信息是否正確

代碼結構解析

1. 初始化設置 (__init__ 方法)

def __init__(self):self.url = "http://127.0.0.1:9580/sign-in.html"  # 登錄頁面地址self.driver = forum.driver  # 使用共享的瀏覽器實例self.driver.get(self.url)  # 打開登錄頁面

2. 正常登錄測試 (normalTest 方法)

def normalTest(self):# 清除輸入框內容self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()# 輸入正確憑據self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("Test1")self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("1234")# 點擊登錄按鈕self.driver.find_element(By.CSS_SELECTOR,"#submit").click()time.sleep(2)# 驗證登錄成功(檢查用戶名顯示區域)self.driver.find_element(By.CSS_SELECTOR, "header中的用戶名字段選擇器")# 截屏保存self.driver.maximize_window()forum.getscreenshot()

3. 異常登錄測試 (abnormalTest 方法)

這個測試方法模擬了5種不同的錯誤登錄情況:

  1. 錯誤用戶名 + 錯誤密碼

    # 輸入錯誤憑據
    self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("Test11")
    self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
    # 點擊登錄
    # 驗證警告信息:assert adim == "警告"
    
  2. 錯誤用戶名 + 正確密碼

    # 輸入錯誤用戶名
    self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("Test11")
    self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")
    # 點擊登錄
    # 驗證警告信息:assert adim == "警告"
    
  3. 正確用戶名 + 錯誤密碼

    # 輸入錯誤密碼
    self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("Test1")
    self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
    # 點擊登錄
    # 驗證警告信息:assert adim == "警告"
    
  4. 只輸入密碼,不輸入用戶名

    # 只輸入密碼
    self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
    # 點擊登錄
    # 驗證提示信息:assert adim == "用戶名不能為空"
    
  5. 只輸入用戶名,不輸入密碼

    # 只輸入用戶名
    self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("Test1")
    # 點擊登錄
    # 驗證提示信息:assert adim == "密碼不能為空"
    

每個測試步驟都會進行頁面截屏保存

如何使用

# 創建測試對象
login = forumlogin()# 運行正常登錄測試
login.normalTest()# 運行異常登錄測試(當前被注釋)
# login.abnormalTest()

6.3 注冊功能自動化測試腳本詳解

測試腳本核心功能

  1. 注冊頁面測試

    • 測試正常注冊流程(用戶名、昵稱、密碼輸入正確)
    • 測試4種異常注冊場景(關鍵字段缺失或協議未同意)
  2. 自動化操作

    • 自動填充表單字段
    • 自動點擊注冊按鈕
    • 智能驗證操作結果
    • 自動截屏保存測試證據

代碼結構解析

class signUp:  # 注冊測試主類def __init__(self):  # 初始化self.url = "http://127.0.0.1:9580/sign-up.html"  # 注冊頁面地址self.driver = forum.driver  # 復用瀏覽器實例self.driver.get(self.url)  # 打開注冊頁面
1. 正常注冊測試 (snormal)
def snormal(self):# 清空輸入框 → 填寫完整信息 → 勾選協議 → 點擊注冊# 驗證是否跳轉到登錄頁(通過檢測登錄頁元素)# 自動截屏保存結果
2. 異常注冊測試 (failsign)

測試了4種錯誤情況:

  1. 用戶名缺失
    # 不填用戶名 → 驗證提示"用戶名不能為空" 
    
  2. 協議未勾選
    # 填寫信息但取消勾選 → 驗證停留在注冊頁 
    
  3. 昵稱缺失
    # 不填昵稱 → 驗證提示"昵稱不能為空" 
    
  4. 密碼缺失
    # 不填密碼 → 驗證錯誤提示 
    

驗證機制亮點

  1. 元素定位驗證
    使用CSS選擇器精確檢測頁面元素:

    self.driver.find_element(By.CSS_SELECTOR,"#signUpForm > div > h2")
    
  2. 智能截屏
    調用forum.getscreenshot()自動按日期分類保存截圖:

    # 示例路徑:../images/2025-06-13/2025-06-13-143022.png
    
  3. 狀態檢測
    對復選框進行智能判斷:

    if checkbox.is_selected():  # 檢測是否已勾選checkbox.click()  # 取消勾選
    

執行方式

signUP = signUp()  # 創建測試對象
# signUP.snormal()  # 執行正常測試(當前被注釋)
signUP.failsign()   # 執行異常測試

6.4 論壇首頁自動化測試腳本詳解

代碼功能解析

  1. 基礎結構
class fpega:driver = ""def __init__(self):self.driver = forum.driver  

這段代碼創建了一個論壇首頁測試類,復用了之前初始化的瀏覽器對象,符合自動化測試的資源復用原則。

  1. 元素驗證方法
def fcheckelement(self):time.sleep(1)  # 固定等待# 定位多個關鍵頁面元素self.driver.find_element(By.CSS_SELECTOR,"#artical-items-body > div:nth-child(1) > div > div.col > div.text-truncate > a > strong")self.driver.find_element(By.CSS_SELECTOR,"#index_nav_nickname")... # 其他元素定位forum.getscreenshot()  # 執行截圖

該方法實現了:

  • 驗證首頁關鍵元素是否存在(文章標題、用戶昵稱、導航菜單等)
  • 執行頁面截圖保存測試證據

測試執行流程

創建fpega實例
調用fcheckelement方法
等待1秒
驗證元素1存在
驗證元素2存在
...驗證其他元素
執行頁面截圖
保存到日期分類文件夾

6.5 發布自動化此時腳本詳解

核心功能設計

  1. 頁面元素檢查 (eCheck 方法)

    • 導航流程:首頁 → 點擊發帖按鈕 → 進入發帖頁面
    • 驗證關鍵元素存在性:
      • 板塊選擇下拉框(#article_post_borad
      • 標題輸入框(#article_post_title
      • 富文本編輯器(復雜 CSS 選擇器定位 CodeMirror 組件)
      • 發布按鈕(#article_post_submit
    • 使用 time.sleep() 強制等待頁面加載(需優化)
  2. 功能測試 (eFuncTest 方法)

    • 測試用例 1:正常發帖(當前被注釋)
      # self.driver.find_element(By.CSS_SELECTOR,"#article_post_title").send_keys("測試帖子1")
      # ...(內容編輯被注釋因技術難點)
      
    • 測試用例 2:標題為空提交
      ActionChains(self.driver).move_to_element(element).click().perform()  # 無標題點擊發布
      text1 = self.driver.find_element(...).text  # 捕獲錯誤提示
      forum.getscreenshot()  # 截圖存檔
      
    • 測試用例 3:內容為空提交
      self.driver.find_element(...).send_keys("測試帖子1")  # 輸入標題
      ActionChains(...).click().perform()  # 提交
      text2 = self.driver.find_element(...).text  # 捕獲錯誤
      

關鍵問題與優化建議

  1. 等待機制缺陷

    • 現狀:全使用 time.sleep() 強制等待
      time.sleep(1)  # 無條件等待1秒
      
    • 風險:頁面加載快則浪費時間,加載慢則元素定位失敗
    • 優化方案(三選一):
      # 方案1:顯式等待(推薦)
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as ECWebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "article_post_submit"))
      ).click()# 方案2:隱式等待(全局設置)
      driver.implicitly_wait(5)  # 在__init__中設置一次# 方案3:Fluent等待(復雜場景)
      wait = WebDriverWait(driver, 10, poll_frequency=1, ignored_exceptions=[TimeoutException])
      wait.until(lambda d: d.find_element(By.ID, "article_post_submit"))
      
  2. 富文本編輯器交互問題

    • 難點:CodeMirror 編輯器非標準 input 元素
      # 當前無法操作:
      # edit-article > div.CodeMirror... > div > pre
      
    • 解決方案
      # 通過JavaScript注入內容
      js_script = "document.querySelector('div.CodeMirror').CodeMirror.setValue('自動化測試內容')"
      driver.execute_script(js_script)
      
  3. 驗證機制強化

    • 現狀:僅打印提示文本
      print(text1)  # 未做斷言驗證
      
    • 優化方向
      assert "標題不能為空" in text1  # 添加斷言
      assert "內容不能為空" in text2
      

執行流程優化

graph TDA[初始化瀏覽器] --> B[eCheck 元素檢查]B --> C[導航至發帖頁]C --> D[驗證關鍵元素]D --> E[eFuncTest 功能測試]E --> F[用例1:正常發帖]E --> G[用例2:空標題提交]E --> H[用例3:空內容提交]H --> I[返回首頁]

測試用例擴展建議

  1. 邊界值測試
    # 超長標題測試(>255字符)
    long_title = "A"*256
    driver.find_element(By.CSS_SELECTOR, "#article_post_title").send_keys(long_title)
    
  2. 特殊字符測試
    special_chars = "!@#$%^&*()_+"
    driver.find_element(...).send_keys(special_chars)
    
  3. 敏感詞過濾驗證
    driver.find_element(...).send_keys("違禁詞測試")
    assert "包含敏感詞" in error_text
    

最佳實踐總結

  1. 等待策略:優先使用 顯式等待 > 隱式等待 > 強制等待
  2. 元素定位:簡化 CSS 選擇器,優先用 ID/ClassName
  3. 異常處理:增加 try/except 捕獲 NoSuchElementException
  4. 截圖管理:保留 forum.getscreenshot() 便于故障回溯
  5. 動作封裝:將 ActionChains 操作封裝為獨立方法

通過優化等待機制和增加斷言驗證,該腳本可顯著提升測試穩定性和驗證嚴謹性。建議優先解決富文本編輯器交互問題以解鎖完整功能測試能力。

6.6 啟動文件

from Test import entryTest
from Test import firstPega
from Test import postContent
from Test import editPage
from Test import privates
if __name__ =="main":#首先測試登錄失敗entryTest.forumlogin().abnormalTest()#然后登錄成功entryTest.forumlogin().normalTest()#進入首頁進行測試firstPega.fpega().fcheckelement()#進入博客詳情頁測試postContent.pContent().pCheck()postContent.pContent().pFunTest()#進入博客編輯頁面editPage.epega().eCheck()editPage.epega().eFuncTest()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83616.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83616.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83616.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ChipWhisperer教程(一)

一、ChipWhisperer介紹 ChipWhisperer 是一個完整的開源工具鏈&#xff0c;用于學習嵌入式設備上的側信道攻擊并驗證這些設備的側信道抗性。ChipWhisperer主要用于功耗分析&#xff0c;利用設備功耗泄露的信息進行攻擊&#xff0c;也可用于故障攻擊&#xff08;電壓和時鐘毛刺…

【持續更新】計算機網絡試題

問題1 請簡要說明TCP/IP協議棧的四層結構&#xff0c;并分別舉出每一層出現的典型協議或應用。 答案 應用層&#xff1a;ping,telnet,dns 傳輸層&#xff1a;tcp,udp 網絡層&#xff1a;ip,icmp 數據鏈路層&#xff1a;arp,rarp 問題2 下列協議或應用分別屬于TCP/IP協議…

短劇系統開發:打造高效、創新的短視頻娛樂平臺 - 從0到1的完整解決方案

一、短劇市場迎來爆發式增長 - 不容錯過的萬億級藍海 隨著5G技術的普及和移動互聯網的深度滲透&#xff0c;短劇市場正在經歷前所未有的爆發式增長。根據權威機構艾瑞咨詢最新發布的《2023年中國網絡短劇行業發展報告》顯示&#xff1a; 市場規模&#xff1a;2023年中國短劇市…

ChipWhisperer教程(三)

——CW305目標板的波形采集 一、目標板介紹 CW305 是一款獨立的 FPGA 目標板&#xff0c;搭載的FPGA芯片為Xilinx Artix-7系列。 它具有與 FPGA 通信的 USB 接口、為 FPGA 提供時鐘的外部 PLL、編程 VCC-INT 電源以及用于故障注入環境的二極管保護。 CW305 電路板有多種配置&…

django中如何解析content-type=application/json的請求

django中如何解析content-typeapplication/json的請求 本文由「大千AI助手」原創發布&#xff0c;專注用真話講AI&#xff0c;回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我&#xff0c;一起撕掉過度包裝&#xff0c;學習真實的AI技術&#xff01; 往期文章回顧: …

Chainlink VRF 深度解析與實戰

背景 在區塊鏈的去中心化應用中&#xff0c;隨機性是一個常見但難以實現的需求。例如&#xff0c;區塊鏈游戲需要隨機決定戰斗結果&#xff0c;NFT 項目需要隨機分配稀有屬性&#xff0c;去中心化抽獎需要公平選擇獲獎者。然而&#xff0c;傳統的鏈上隨機數生成方法&#xff0…

7. TypeScript接口

TypeScript 中的接口&#xff08;Interfaces&#xff09;用于定義對象的結構。它們允許開發者指定一個對象應具有哪些屬性以及這些屬性的類型。接口有助于確保對象遵循特定的結構&#xff0c;從而在整個應用中提供一致性&#xff0c;并提升代碼的可維護性。 一、認識接口 Typ…

UE 新版渲染器輸出視頻

安裝包解壓到C盤 打開UE插件 Movie Render Queue 進入UE引擎在項目設置找到 libx264 aac mp4 影片渲染隊列調用出 命令行編碼器安裝包路徑&#xff0c;序列輸出路徑&#xff0c;定序器不能有中文

基于用戶的協同過濾推薦算法實現(Java電商平臺)

在電商平臺中&#xff0c;基于用戶的協同過濾推薦算法是一種常見的推薦系統方法。它通過分析用戶之間的相似性來推薦商品。以下是一個簡單的實現思路和示例代碼&#xff0c;使用Java語言。 實現思路 數據準備&#xff1a;收集用戶的評分數據&#xff0c;通常以用戶-商品評分矩…

LeetCode - 904. 水果成籃

題目 904. 水果成籃 - 力扣&#xff08;LeetCode&#xff09; 思路 題目本質 你有一個整數數組&#xff0c;每個元素代表一種水果。你只能用兩個籃子&#xff0c;每個籃子只能裝一種水果。你要在數組中找一個最長的連續子數組&#xff0c;這個子數組里最多只包含兩種不同的…

發現 Kotlin MultiPlatform 的一點小變化

最近發現 Kotlin 官方已經開始首推 Idea 的社區版的 KMP 插件了. 以前有網頁創建 KMP 的項目的文檔也消失了. 雖然有 Android Studio 的選項. 但是卻不是在默認的位置上了. 足以說明官方是有意想讓大家直接使用 Idea 社區版或者專業版 所以我直接在社區版上安裝 KMP 插件. 嘗試…

【Photoshop】金屬字體制作

新建一個空白項目&#xff0c;選擇橫排文字工具&#xff0c;輸入想要的文件建立文字圖層 選擇橫排文字工具選擇出文字內容&#xff0c;在通知欄出點擊’拾色器‘&#xff0c;設置好需要的文字顏色 圖層面板右下角點擊‘添加圖層樣式’&#xff0c;選擇斜面和浮雕 樣式設置為內斜…

centos 7.9 升級ssh版本 7.4p1 升級到 8.2p1

centos 7.9 升級ssh版本 7.4p1 升級到 8.2p1 1、安裝包下載2、安裝telnet3、安裝openssl-OpenSSL_1_1_1f.tar.gz4、安裝openssh-8.2p1.tar.gz5、修改ssh服務的相關配置文件6、確定可以ssh連接服務器后&#xff0c;卸載telnet&#xff0c;因為telnet不安全 本文是離線環境下升級…

stm32---dma串口發送+fifo隊列框架

之前分享了一個關于gd32的fifo框架&#xff0c;這次就用stm32仿照寫一個&#xff0c;其實幾乎一樣&#xff0c;這次說的更詳細點&#xff0c;我全文都寫上了注釋&#xff0c;大家直接cv模仿我的調用方式即可 uasrt.c #include "stm32f10x.h" // D…

【生產就曲篇】讓應用可觀測:Actuator監控端點與日志最佳實踐

摘要 本文是《Spring Boot 實戰派》系列的終章&#xff0c;我們將探討如何讓應用真正達到**“生產就緒” (Production-Ready)** 的標準。文章的核心是可觀測性 (Observability)&#xff0c;即從外部了解一個系統內部運行狀態的能力。 我們將深度挖掘 Spring Boot Actuator 的…

操作系統知識(1)

操作系統的分類總結 1、批處理操作系統:單道批處理和多道批處理(主機與外設可并行) 2、分時操作系統:一個計算機系統與多個終端設備連接。將CPU的工作時間劃分為許多很短的時間片&#xff0c;輪流為各個終端的用戶服務。 3、實時操作系統:實時是指計算機對于外來信息能夠以足…

一.Sharding分庫分表-基因法+自定義多key分片實現多字段查詢

前言 當下遇到這樣一個場景&#xff0c;由于訂單數據量達到千萬級別&#xff0c;采用分庫分表進行優化&#xff0c;根據訂單的熱查條件&#xff1a;order_no訂單編號進行分表&#xff0c;但是這樣帶來一個問題&#xff0c;用戶查詢自己的訂單怎么查&#xff1f;由于分片鍵使用…

【leetcode】543. 二叉樹的直徑

二叉樹的直徑 題目題解解釋 題目 543. 二叉樹的直徑 給你一棵二叉樹的根節點&#xff0c;返回該樹的 直徑 。 二叉樹的 直徑 是指樹中任意兩個節點之間最長路徑的 長度 。這條路徑可能經過也可能不經過根節點 root 。 兩節點之間路徑的 長度 由它們之間邊數表示。 題解 …

AI基礎知識(07):基于 PyTorch 的手寫體識別案例手冊

目錄 實驗介紹 實驗對象 實驗時間 實驗流程 實驗介紹 隨著人工智能技術的飛速發展&#xff0c;圖像識別技術在眾多領域得到了廣泛應用。手寫體識別作為圖像 識別的一個重要分支&#xff0c;其在教育、金融、醫療等領域具有廣泛的應用前景。本實驗旨在利用深度 學習框架 PyTorc…

wordpress后臺更新后 前端沒變化的解決方法

使用siteground主機的wordpress網站&#xff0c;會出現更新了網站內容和修改了php模板文件、js文件、css文件、圖片文件后&#xff0c;網站沒有變化的情況。 不熟悉siteground主機的新手&#xff0c;遇到這個問題&#xff0c;就很抓狂&#xff0c;明明是哪都沒操作錯誤&#x…