Selenium中`driver.get(htmlfile)`方法可能出現的超時問題

針對Selenium中driver.get(htmlfile)方法可能出現的超時問題,以下是幾種改進方案及具體實現方法:


1. 設置頁面加載超時時間

通過set_page_load_timeout()方法直接控制頁面加載的最大等待時間。若超時,會拋出TimeoutException異常,需配合try-except處理:

from selenium import webdriver
from selenium.common.exceptions import TimeoutExceptiondriver = webdriver.Chrome()
driver.set_page_load_timeout(5)  # 單位:秒
try:driver.get("file:///path/to/local.html")
except TimeoutException:print("頁面加載超時,繼續執行后續操作")driver.execute_script("window.stop()")  # 強制停止加載

2. 調整隱式等待(Implicit Wait)

隱式等待作用于全局元素查找,雖不直接影響get()方法,但可結合顯式等待優化整體流程:

driver.implicitly_wait(10)  # 全局等待元素最多10秒

3. 顯式等待(Explicit Wait)結合條件判斷

針對特定元素加載狀態設置等待條件,避免因部分資源未加載導致阻塞:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import Bydriver.get("file:///path/to/local.html")
try:# 等待關鍵元素加載完成(如頁面標題或某個DOM節點)element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "main-content")))
except TimeoutException:print("關鍵元素未加載,執行備用邏輯")

4. 修改頁面加載策略(Page Load Strategy)

將瀏覽器設置為不等待所有資源加載完成,適用于僅需DOM解析的場景:

from selenium.webdriver import ChromeOptionsoptions = ChromeOptions()
options.page_load_strategy = "none"  # 或 "eager"(僅等待DOM解析)
driver = webdriver.Chrome(options=options)
driver.get("file:///path/to/local.html")  # 立即返回控制權,需手動同步狀態

5. 自定義超時重試機制

通過循環和異常捕獲實現重試邏輯,增強魯棒性:

import timemax_retries = 3
retry_count = 0
while retry_count < max_retries:try:driver.set_page_load_timeout(10)driver.get("file:///path/to/local.html")breakexcept TimeoutException:retry_count += 1print(f"第{retry_count}次重試...")time.sleep(2)

注意事項

  • 本地文件路徑問題:確保`
  • Headless模式優化:無頭瀏覽器可能加載更快,可通過options.add_argument("--headless=new")啟用。
  • 網絡請求攔截:若頁面依賴外部資源(如CDN),可通過driver.execute_cdp_cmd("Network.enable", {})攔截無關請求。

根據實際需求選擇上述方法組合使用。若需完整代碼示例或進一步調試細節,可參考相關技術文檔。

由小藝AI生成<xiaoyi.huawei.com>

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

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

相關文章

20分鐘了解 MMAction2 框架設計

步驟3&#xff1a;構建一個識別器 # 修改此處 predictions[0].pred_score -> predictions[0].pred_scores.item print(Scores of Sample[0], predictions[0].pred_scores.item)步驟4&#xff1a;構建一個評估指標 # 修改此處 data_sample[pred_score].cpu().numpy() ->…

單軌小車懸掛輸送機安全規程

導語 大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。歡迎大家使用我們的倉儲物流技術AI智能體。 新書《智能物流系統構成與技術實踐》 新書《智能倉儲項目出海-英語手冊&#xff0c;必備&#xff01;》 完整版文件和更多學習資料&#xf…

C++之多態

文章目錄 一、多態的概念 多態的定義與類型 二、多態的實現 三、虛函數 虛函數的概念 虛函數的重寫/覆蓋 協變 析構函數的重寫/覆蓋 override,final關鍵字 override final 純虛函數與抽象類 三個概念辨析 四、多態實現的原理 虛函數表指針 動態綁定與靜態綁定 …

深入理解 HTML5 Audio:網頁音頻播放的新時代

在網頁開發領域,音頻的嵌入和播放一直是一個重要且不斷演進的話題。HTML5 的出現,為網頁音頻播放帶來了標準化的解決方案,極大地改善了開發者和用戶的體驗。 一、HTML5 之前的音頻播放狀況 在 HTML5 誕生之前,互聯網上缺乏統一的網頁音頻播放標準。當時,大多數音頻播放依…

重載和重寫的區別

重載 在同一個類中定義多個同名方法&#xff0c; 但參數列表不同&#xff08;參數類型、參數個數或參數順序不同&#xff09;返回值類型不同。 public class MathOperations {int add(int a, int b) {return a b;}double add(double a, double b) {return a b;} }重寫 子…

機器視覺+深度學習,讓電子零部件表面缺陷檢測效率大幅提升

在精密加工的3C電子行業中&#xff0c;一抹0.1毫米的油漬&#xff0c;一粒肉眼難辨的灰塵或將引發整機性能隱患。當制造業邁入微米級品質競爭時代&#xff0c;產品表面看似微不足道的臟污缺陷&#xff0c;正成為制約企業高質量發展的隱形枷鎖。分布無規律的污漬斑點、形態各異的…

Dart逆向之函數調用

我們從Blutter恢復的部分IL中可以看到Dart調用函數的邏輯 // 0x180490: r16 <int> // 0x180490: ldr x16, [PP, #0x8a0] ; [pp0x8a0] TypeArguments: <int> // 0x180494: r30 Instance_MethodChannel // 0x180494: ldr lr, [P…

如何白嫖Grok3 API? 如何使用Grok3 API調用實例?怎么使用Grok3模型?

前段時間&#xff0c;Grok3&#xff08;想要體驗Grok3的童鞋可以參考本文&#xff1a;Grok 上線角色扮演功能&#xff0c;教你課后作業手到擒來&#xff0c;Grok3使用次數限制&#xff1f;如何使用Grok3? Grok3國內支付手段如何訂閱升級Premium - AI is all your need!&#x…

《超短心法》速讀筆記

文章目錄 書籍信息概覽主線行業篇戰法一 人氣漲停戰法戰法二 四維主線戰法 主線龍頭篇戰法三 龍頭起爆戰法戰法四 六合強莊控盤戰法戰法五 籌碼戰法之七星連珠 趨勢牛股篇戰法六 趨勢擒龍之暴漲形態戰法七 趨勢破位起爆戰法戰法八 強中選強多頭戰法 漲停晉級篇戰法九 強勢漲停狙…

git倉庫遷移包括提交記錄日志

網上找了很多資料都不好用&#xff0c;直到看到一個親測有效后&#xff0c;整理如下&#xff1a; 1、進入倉庫目錄下&#xff0c;并且切換到要遷移的分支上 前提是你本地已有舊倉庫的代碼&#xff1b;如果沒有的話&#xff0c;先拉取。 2、更改倉庫地址 git remote set-url …

powerDesign 逆向 mysql 生成 物理模型,并用VBS腳本整理comment

學習自&#xff1a;https://www.cnblogs.com/xmyjcs/p/8536233.html 文章目錄 Reverse Engineer格式化模型執行 VBS 腳本 Reverse Engineer 下面 DBMS 可以通過 ODBC&#xff08;Open Database Connectivity&#xff0c;開放數據庫連接&#xff09;連接&#xff0c; 需要自己先…

Qt文件讀寫

Qt文件讀寫&#xff08;Stream流形式&#xff09; 文件讀寫相關類 1. QFile類 QFile主要用于文件的打開、關閉等功能&#xff1b; [override virtual] bool QFile::open(QIODevice::OpenMode mode);Reimplements: QIODevice::open(QIODevice::OpenMode mode). Opens the fi…

[特殊字符]【高并發實戰】Java Socket + 線程池實現高性能文件上傳服務器(附完整源碼)[特殊字符]

大家好&#xff01;今天給大家分享一個 Java Socket 線程池 實現的高性能文件上傳服務器&#xff0c;支持 多客戶端并發上傳&#xff0c;代碼可直接運行&#xff0c;適合 面試、項目實戰、性能優化 學習&#xff01; &#x1f4cc; 本文亮點&#xff1a; ? 完整可運行代碼&a…

Python proteinflow 庫介紹

ProteinFlow是一個開源的Python庫,旨在簡化蛋白質結構數據在深度學習應用中的預處理過程。以下是其詳細介紹: 功能 數據處理:支持處理單鏈和多鏈蛋白質結構,包括二級結構特征、扭轉角等特征化選項。 數據獲取:能夠從Protein Data Bank (PDB)和Structural Antibody Databa…

WebPages 對象

WebPages 對象 引言 在Web開發領域&#xff0c;WebPages 對象是前端工程師和開發者常用的工具之一。它提供了豐富的API&#xff0c;使我們能夠輕松地與網頁元素進行交互。本文將深入探討WebPages對象的概念、特性以及在實際開發中的應用。 概念 WebPages對象是現代瀏覽器提…

Mysql表的操作(2)

1.去重 select distinct 列名 from 表名 2.查詢時排序 select 列名 from 表名 order by 列名 asc/desc; 不影響數據庫里面的數據 錯誤樣例 &#xff1a; 但結果卻有點出乎意料了~為什么會失敗呢&#xff1f; 其實這是因為書寫的形式不對&#xff0c;如果帶了引號&#xff0c;…

先占個日常,等會寫。

引入一個重要的概念 “struct” &#xff08;譯為中文&#xff1a;結構體&#xff09; 可用作設出比較復雜的一些變量類型 語法 &#xff1a;struct point name { int x; int y; int z;} point 和 name是任意命名的名字&#xff0c;含義是&#xff0c;聲明一個變量類型為st…

SmolDocling:一種超緊湊的視覺語言模型,用于端到端多模態文檔轉換

paper地址:SmolDocling: An ultra-compact vision-language model for end-to-end multi-modal document conversion Huggingface地址:SmolDocling-256M-preview 代碼對應的權重文件:SmolDocling-256M-preview權重文件 一、摘要 以下是文章摘要的總結: SmolDocling 是一…

MySQL SQL Mode

SQL Mode 是 MySQL 中一個重要的系統變量&#xff0c;它決定了 MySQL 應遵循的 SQL 語法規則和數據驗證規則。 什么是 SQL Mode SQL Mode 定義了 MySQL 應該支持的 SQL 語法以及執行數據驗證的方式。通過設置不同的 SQL Mode&#xff0c;可以讓 MySQL 在不同程度上兼容其他數據…

Java bs架構/反射

bs架構 規定的格式是要換行&#xff0c;而打印流天然換行 線程池可以直接處理thread&#xff0c;thread繼承自runnable 在Java中&#xff0c;線程池的pool.execute()方法用于提交一個任務給線程池執行。這個方法接受一個Runnable對象作為參數。Runnable是一個函數式接口&…