1. 程式人生 > 程式設計 >Selenium常見異常解析及解決方案示範

Selenium常見異常解析及解決方案示範

pycharm中匯入selenium報錯

現象: pycharm中輸入from selenium import webdriver,selenium標紅

原因1: pycharm使用的虛擬環境中沒有安裝selenium,

解決方法: 在pycharm中通過設定或terminal面板重新安裝selenium

原因2: 當前專案下有selenium.py,和系統包名衝突導致,

解決方法,重新命名這個檔案

驅動及本地服務類異常

未找到響應的瀏覽器驅動

WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

WebDriverException: Message: 'chromedriver' executable needs to be in PATH.

原因: 查詢不到對應的瀏覽器驅動

解決方法: 下載瀏覽器對應版本的chromedriver或geckodrivergeckodriver

放到腳本當前資料夾下或將路徑配置到環境變數中,或放到Python目錄的Scripts下(一般情況下Python的Scripts目錄在環境變數中),或使用瀏覽器選項options指定驅動路徑

未找到瀏覽器

WebDriverException: Message Can not connect to the Service chromedriver

org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary

原因: 在預設路徑下未找到Firefox瀏覽器

解決方法: 重新安裝Firefox瀏覽器

驅動和瀏覽器不匹配

SessionNotCreatedException: Message: session not created:
this version of ChromeDriver only supports Chrome version 76

原因: 當前使用chromedriver只支援Chrome76版本

解決方法: 檢視本地Chrome瀏覽器的版本,下載對應的chromedriver

驅動被防火牆攔截

WebDriverException: Message: Can not connect to the Service IEDriverServer.exe

原因: iedriverserver.exe被防火牆攔截

解決方法: 防火牆設定允許

連線不上chromedriver服務

WebDriverException: Message: Can not connect ot the Service chromedriver

原因: 指令碼通過127.0.0.1這個ip訪問本地chromedriver服務,hosts中未配置 127.0.0.1指向localhost

解決辦法: 配置本地hosts,新增:127.0.0.1 localhost

6.RemoteDriverServerException: 遠端伺服器異常,解決方法: 確認webdriver.Remote()中的遠端Webdriver服務是否OK

7. ErrorInResponseException: Webdriver伺服器響應異常,解決方法,根據具體報錯資訊分析

找不到類異常: 定位/獲取屬性/切換警告框,Frame,視窗

  1. NoSuchElementException: 找不到元素,解決方法: 前面加上sleep等待後重試,或換一種定位方式
  2. NoSuchAttributeException: 元素沒有這個屬性,解決方法: 確認定位到的元素是否目標元素,檢查屬性拼寫
  3. NoAlertPresentException:沒有找到alert彈出框,解決方法: 觀察頁面,檢視是否有彈框出現,加上等待或作為偶現元素處理
  4. NoSuchFrameException:沒有找到指定的frame或iframe,解決方法: 檢視拼寫或切換使用frame的id/name/index/定位到的frame
  5. NoSuchWindowException: 沒找到視窗控制代碼指定的視窗,解決方法: 檢視使用的視窗控制代碼變數拼寫
  6. UnexpectedAlertPresentException: 出現了彈框而未處理,解決方法: 切換到警告框並處理,如果偶現,使用try...except處理偶現彈框
  7. InvalidSwitchToTargetException: 切換到指定frame或視窗報錯,解決方法: 檢視相應的frame或視窗是否能定位到
  8. UnexpectedTagNameException: 使用Tag Name不合法,解決方法: 檢查拼寫或使用css selector/xpath
  9. TimeoutException:查詢元素或操作超時,稍後重試

元素操作異常類: 隱藏/不可操作狀態

  1. ElementNotVisibleException:元素不可見異常,selenium不能直接操作隱藏元素,解決方法: 加上等待,使用正常步驟使元素顯示,或使用js找到該元素的祖先節點的隱藏屬性(通常為styple="display: none"),移除該屬性然後定位操作.
  2. StaleElementReferenceException: 陳舊元素引用異常,頁面重新整理或跳轉後使用了之前定位到的元素,解決方法: 重新定位元素並操作
  3. InvalidElementStateException: 元素狀態異常 元素只讀/不可點選等,等待或使用js移除元素readonly/disable等限制屬性後操作
  4. ElementNotSelectableException:元素不可被選中,解決方法: 確認原始是否為select標籤,是否禁用
  5. InvalidSelectorException: 使用的定位方法不支援或xpath語法錯誤,未返回元素,解決方法: 檢查使用的元素定位器是否拆包,使用find_element()方法是,第一個引數為'class name','link text','particial link text' 'css selector',空格分開,非下劃線連線,建議使用By.CLASS_NAME的方式. 使用chrome開發著工具+Ctrl+F搜尋驗證自己寫的xpath語法.
  6. MoveTargetOutOfBoundsException: 使用ActionChains的move方法時移動到的位置不合適

Cookie存取相關異常

  1. InvalidCookieDomainException: Cookie相應的域名無效
  2. UnableToSetCookieException: 設定Cookie異常

IME輸入法引擎異常

  1. ImeNotAvailableException: 伺服器不支援輸入法
  2. ImeActivationFailedException: 輸入法啟用異常

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。