Selenium常見(jiàn)異常解析及解決方案示范
pycharm中導(dǎo)入selenium報(bào)錯(cuò)
現(xiàn)象: pycharm中輸入from selenium import webdriver, selenium標(biāo)紅
原因1: pycharm使用的虛擬環(huán)境中沒(méi)有安裝selenium,
解決方法: 在pycharm中通過(guò)設(shè)置或terminal面板重新安裝selenium
原因2: 當(dāng)前項(xiàng)目下有selenium.py,和系統(tǒng)包名沖突導(dǎo)致,
解決方法,重命名這個(gè)文件
驅(qū)動(dòng)及本地服務(wù)類(lèi)異常
未找到響應(yīng)的瀏覽器驅(qū)動(dòng)
WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
或
WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
原因: 查找不到對(duì)應(yīng)的瀏覽器驅(qū)動(dòng)
解決方法: 下載瀏覽器對(duì)應(yīng)版本的chromedriver或geckodrivergeckodriver
放到腳本當(dāng)前文件夾下或?qū)⒙窂脚渲玫江h(huán)境變量中, 或放到Python目錄的Scripts下(一般情況下Python的Scripts目錄在環(huán)境變量中), 或使用瀏覽器選項(xiàng)options指定驅(qū)動(dòng)路徑
未找到瀏覽器
WebDriverException: Message Can not connect to the Service chromedriver
org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary
原因: 在默認(rèn)路徑下未找到Firefox瀏覽器
解決方法: 重新安裝Firefox瀏覽器
驅(qū)動(dòng)和瀏覽器不匹配
SessionNotCreatedException: Message: session not created:
this version of ChromeDriver only supports Chrome version 76
原因: 當(dāng)前使用chromedriver只支持Chrome76版本
解決方法: 查看本地Chrome瀏覽器的版本, 下載對(duì)應(yīng)的chromedriver
驅(qū)動(dòng)被防火墻攔截
WebDriverException: Message: Can not connect to the Service IEDriverServer.exe
原因: iedriverserver.exe被防火墻攔截
解決方法: 防火墻設(shè)置允許
連接不上chromedriver服務(wù)
WebDriverException: Message: Can not connect ot the Service chromedriver
原因: 腳本通過(guò)127.0.0.1這個(gè)ip訪問(wèn)本地chromedriver服務(wù), hosts中未配置 127.0.0.1指向localhost
解決辦法: 配置本地hosts, 添加:127.0.0.1 localhost
6.RemoteDriverServerException: 遠(yuǎn)程服務(wù)器異常, 解決方法: 確認(rèn)webdriver.Remote()中的遠(yuǎn)程Webdriver服務(wù)是否OK
7. ErrorInResponseException: Webdriver服務(wù)器響應(yīng)異常, 解決方法, 根據(jù)具體報(bào)錯(cuò)信息分析
找不到類(lèi)異常: 定位/獲取屬性/切換警告框,Frame, 窗口
- NoSuchElementException: 找不到元素, 解決方法: 前面加上sleep等待后重試,或換一種定位方式
- NoSuchAttributeException: 元素沒(méi)有這個(gè)屬性, 解決方法: 確認(rèn)定位到的元素是否目標(biāo)元素, 檢查屬性拼寫(xiě)
- NoAlertPresentException:沒(méi)有找到alert彈出框, 解決方法: 觀察頁(yè)面,查看是否有彈框出現(xiàn), 加上等待或作為偶現(xiàn)元素處理
- NoSuchFrameException:沒(méi)有找到指定的frame或iframe, 解決方法: 查看拼寫(xiě)或切換使用frame的id/name/index/定位到的frame
- NoSuchWindowException: 沒(méi)找到窗口句柄指定的窗口, 解決方法: 查看使用的窗口句柄變量拼寫(xiě)
- UnexpectedAlertPresentException: 出現(xiàn)了彈框而未處理, 解決方法: 切換到警告框并處理, 如果偶現(xiàn),使用try...except處理偶現(xiàn)彈框
- InvalidSwitchToTargetException: 切換到指定frame或窗口報(bào)錯(cuò), 解決方法: 查看相應(yīng)的frame或窗口是否能定位到
- UnexpectedTagNameException: 使用Tag Name不合法, 解決方法: 檢查拼寫(xiě)或使用css selector/xpath
- TimeoutException:查找元素或操作超時(shí), 解決方法, 稍后重試
元素操作異常類(lèi): 隱藏/不可操作狀態(tài)
- ElementNotVisibleException:元素不可見(jiàn)異常, selenium不能直接操作隱藏元素, 解決方法: 加上等待, 使用正常步驟使元素顯示, 或使用js找到該元素的祖先節(jié)點(diǎn)的隱藏屬性(通常為styple="display: none"), 移除該屬性然后定位操作.
- StaleElementReferenceException: 陳舊元素引用異常, 頁(yè)面刷新或跳轉(zhuǎn)后使用了之前定位到的元素, 解決方法: 重新定位元素并操作
- InvalidElementStateException: 元素狀態(tài)異常 元素只讀/不可點(diǎn)擊等, 解決方法, 等待或使用js移除元素readonly/disable等限制屬性后操作
- ElementNotSelectableException:元素不可被選中, 解決方法: 確認(rèn)原始是否為select標(biāo)簽, 是否禁用
- InvalidSelectorException: 使用的定位方法不支持或xpath語(yǔ)法錯(cuò)誤, 未返回元素, 解決方法: 檢查使用的元素定位器是否拆包, 使用find_element()方法是, 第一個(gè)參數(shù)為'class name', 'link text', 'particial link text' 'css selector', 空格分開(kāi), 非下劃線(xiàn)連接, 建議使用By.CLASS_NAME的方式. 使用chrome開(kāi)發(fā)著工具+Ctrl+F搜索驗(yàn)證自己寫(xiě)的xpath語(yǔ)法.
- MoveTargetOutOfBoundsException: 使用ActionChains的move方法時(shí)移動(dòng)到的位置不合適
Cookie存取相關(guān)異常
- InvalidCookieDomainException: Cookie相應(yīng)的域名無(wú)效
- UnableToSetCookieException: 設(shè)置Cookie異常
IME輸入法引擎異常
- ImeNotAvailableException: 服務(wù)器不支持輸入法
- ImeActivationFailedException: 輸入法激活異常
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python面向?qū)ο缶幊淘O(shè)計(jì)原則之單一職責(zé)原則詳解
這篇文章主要為大家詳細(xì)介紹了python面向?qū)ο缶幊淘O(shè)計(jì)原則之單一職責(zé)原則,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03如何徹底解決Python中matplotlib不顯示中文的問(wèn)題詳解(顯示方框)
Matplotlib繪制圖像顯示中文的時(shí)候,中文會(huì)變成小方格子,下面這篇文章主要給大家介紹了關(guān)于如何徹底解決Python中matplotlib不顯示中文問(wèn)題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Django實(shí)現(xiàn)單用戶(hù)登錄的方法示例
這篇文章主要介紹了Django實(shí)現(xiàn)單用戶(hù)登錄的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03PyCharm中New Directory 和 New Python
python package這是一個(gè)特殊的目錄,因?yàn)樵趧?chuàng)建該python package的時(shí)候,系統(tǒng)會(huì)自動(dòng)地生成一個(gè)py文件, init.py,這篇文章主要介紹了PyCharm中New Directory 和 New Python Package的區(qū)別,需要的朋友可以參考下2023-12-12Python unittest單元測(cè)試框架實(shí)現(xiàn)參數(shù)化
這篇文章主要介紹了Python unittest單元測(cè)試框架實(shí)現(xiàn)參數(shù)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04使用Python導(dǎo)出Excel圖表以及導(dǎo)出為圖片的方法
這篇文章主要介紹了使用Python導(dǎo)出Excel圖表以及導(dǎo)出為圖片的方法,Python相關(guān)模塊在Windows下操作office非常方便,需要的朋友可以參考下2015-11-11Python實(shí)現(xiàn)圖像去霧效果的示例代碼
本文將利用《bringing old photos back to life》 的開(kāi)源代碼,并在此基礎(chǔ)上進(jìn)行修改,從而實(shí)現(xiàn)圖像去霧的效果,感興趣的小伙伴可以學(xué)習(xí)一下2022-02-02如何使用Python對(duì)NetCDF數(shù)據(jù)做空間相關(guān)分析
這篇文章主要介紹了如何使用Python對(duì)NetCDF數(shù)據(jù)做空間相關(guān)分析,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04