Selenium常見異常分析及解決方案


一、pycharm中導入selenium報錯

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

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

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

原因2: 當前項目下有selenium.py,和系統包名沖突導致,

解決方法,重命名這個文件

 二、驅動及本地服務類異常

1、未找到響應的瀏覽器驅動:

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

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

解決方法: 下載瀏覽器對應版本的 chromedriver 或geckodriver,放到腳本當前文件夾下或將路徑配置到環境變量中, 或放到Python目錄的Scripts下(一般情況下Python的Scripts目錄在環境變量中), 或使用瀏覽器選項options指定驅動路徑。

2、未找到瀏覽器

WebDriverException: Message Can not connect to the Service chromedriver org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary

原因: 在默認路徑下未找到Firefox/Chrome瀏覽器

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

3、驅動和瀏覽器不匹配

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

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

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

4、驅動被防火牆攔截

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

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

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

5、連接不上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異常

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM