欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Selenium常見的報錯問題以及措施

 更新時間:2024年05月16日 16:50:06   作者:CCSBRIDGE  
這篇文章主要介紹了Python Selenium常見的報錯問題以及措施,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Selenium的常見報錯主要包括以下幾種

1.NoSuchElementException

當Selenium無法在DOM中找到元素時,會拋出此異常。這通常是因為元素不存在或者頁面還未完全加載。    

解決方法:

  • 顯式等待
  • 隱式等待
  • 越快越慢,越慢越快,快就是慢,就是快,所以越慢就越快。
  • 或者把程序放到不同的網(wǎng)絡(luò)的不同的電腦上,多個網(wǎng)絡(luò)多個電腦分擔工作、

2.TimeoutException

當?shù)却硞€條件成立(例如,等待元素加載)的時間超過預(yù)設(shè)的最大值時,會拋出此異常。    

解決方法:

  • 始終無法成功等待元素出現(xiàn)就會出現(xiàn)這個問題
  • 很可能是服務(wù)器覺得你這個客戶端給他帶來的負擔太大了,它受不了了。那么
  • 休息一段時間,它好你也好

3.WebDriverException

當與WebDriver通信出現(xiàn)問題時,會拋出此異常。這可能是因為WebDriver服務(wù)未啟動,或者網(wǎng)絡(luò)連接中斷。    

解決方法:

  • 總的來說是小問題
  • 檢查瀏覽器版本,檢查瀏覽器驅(qū)動版本,檢查網(wǎng)絡(luò)情況,檢查網(wǎng)絡(luò)代理情況
  • 更新Selenium庫?

4.StaleElementReferenceException

當引用的元素已經(jīng)不在DOM中時,會拋出此異常。這通常是因為頁面已經(jīng)刷新或者元素已經(jīng)被刪除。    

解決方法:

  • 有可能原來的URL已經(jīng)失效或者過期了,于是會自動跳轉(zhuǎn)到一個新的網(wǎng)頁,新的網(wǎng)頁往往在腳本程序中既定的跪著之外。
  • 檢查當前URL
  • 檢查當前標簽標題

5.NoSuchFrameException

當試圖切換到不存在的frame時,會拋出此異常。    

解決方法:

  • 嘗試從根節(jié)點重新依次定位到該frame標簽

6.NoSuchWindowException

當試圖切換到不存在的窗口時,會拋出此異常。

解決方法:

  • 重新獲取有效的標簽頁,順便清理一下多余的標簽頁

7.ElementNotVisibleException

當試圖與不可見的元素交互時,會拋出此異常。    

解決方法:

  • 等待該元素可見
  • 使用JavaScript或者jQuery來改變元素的可見性
  • 滾動到元素
  • 使用ActionChains模擬用戶交互,例如鼠標懸停、拖放等

8.ElementNotInteractableException

當試圖與不可交互的元素(例如,被禁用的輸入框)交互時,會拋出此異常。

解決方法:

  • 等待元素變?yōu)榭山换?/li>
  • 檢查元素是否被其他元素遮擋
  • 使用JavaScript進行交互(非要硬剛的話)

解決的代碼示例

1. 顯式等待

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
 
driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()

2. 隱式等待

from selenium import webdriver
 
driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://somedomain/url_that_delays_loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")

3. 使用try/except語句來捕獲NoSuchElementException異常,當異常發(fā)生時,你可以記錄錯誤信息,或者執(zhí)行其他的恢復(fù)操作。

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
 
driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
    myDynamicElement = driver.find_element_by_id("myDynamicElement")
except NoSuchElementException:
    print("Element not found")

4. 等待元素變?yōu)榭山换?/strong>

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
 
element = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, 'myElement'))
)

5. 避免元素被其他元素所遮擋

element = driver.find_element_by_id("myElement")
driver.execute_script("arguments[0].style.zIndex = 9999;", element)

6. 使用JavaScript進行交互硬剛

element = driver.find_element_by_id("myElement")
driver.execute_script("arguments[0].click();", element)

7. 使用JavaScript或者jQuery來改變元素的可見性

element = driver.find_element_by_id("myElement")
driver.execute_script("arguments[0].style.display = 'block';", element)

8. 滾動到元素

element = driver.find_element_by_id("myElement")
driver.execute_script("arguments[0].scrollIntoView();", element)

9. 模擬復(fù)雜的用戶交互

from selenium.webdriver import ActionChains
 
element = driver.find_element_by_id("myElement")
actions = ActionChains(driver)
actions.move_to_element(element).perform()

10. 終極無敵暴力方法:多次修bug迭代     

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 用python對oracle進行簡單性能測試

    用python對oracle進行簡單性能測試

    這篇文章主要介紹了用python對oracle進行簡單性能測試的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 詳解python校驗SQL腳本命名規(guī)則

    詳解python校驗SQL腳本命名規(guī)則

    這篇文章主要介紹了python校驗SQL腳本命名規(guī)則,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-03-03
  • python中的單引號雙引號區(qū)別知識點總結(jié)

    python中的單引號雙引號區(qū)別知識點總結(jié)

    在本篇文章中小編給大家整理了關(guān)于python中的單引號雙引號有什么區(qū)別的相關(guān)知識點以及實例代碼,需要的朋友們參考下。
    2019-06-06
  • Python中處理JSON文件的超詳細指南

    Python中處理JSON文件的超詳細指南

    這篇文章主要給大家介紹了關(guān)于Python中處理JSON文件的超詳細指南,json模塊是python內(nèi)置的庫,不需要額外安裝就可以導(dǎo)入運行,json模塊的主要功能是將序列化數(shù)據(jù)從文件里讀取出來或者存入文件,需要的朋友可以參考下
    2024-05-05
  • python 實現(xiàn)矩陣按對角線打印

    python 實現(xiàn)矩陣按對角線打印

    今天小編就為大家分享一篇python 實現(xiàn)矩陣按對角線打印,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python?matplotlib調(diào)整坐標軸位置、標簽位置和標簽方向以及X軸刻度標簽位置

    Python?matplotlib調(diào)整坐標軸位置、標簽位置和標簽方向以及X軸刻度標簽位置

    我們在用matplotlib繪制圖的時候總是有各種需求,下面這篇文章主要給大家介紹了關(guān)于Python?matplotlib調(diào)整坐標軸位置、標簽位置和標簽方向以及X軸刻度標簽位置的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • 詳解Python模塊化編程與裝飾器

    詳解Python模塊化編程與裝飾器

    這篇文章主要介紹了Python模塊化編程與裝飾器的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • python3實現(xiàn)高效的端口掃描

    python3實現(xiàn)高效的端口掃描

    這篇文章主要為大家詳細介紹了python3實現(xiàn)高效的端口掃描,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 基于Python實現(xiàn)GeoServer矢量文件批量發(fā)布

    基于Python實現(xiàn)GeoServer矢量文件批量發(fā)布

    由于矢量圖層文件較多,手動發(fā)布費時費力,python支持的關(guān)于geoserver包又由于年久失修,無法在較新的geoserver版本中正常使用。本文為大家準備了Python自動化發(fā)布矢量文件的代碼,需要的可以參考一下
    2022-07-07
  • 利用Python第三方庫實現(xiàn)預(yù)測NBA比賽結(jié)果

    利用Python第三方庫實現(xiàn)預(yù)測NBA比賽結(jié)果

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著利用Python實現(xiàn)預(yù)測NBA比賽結(jié)果展開,文中有非常詳細的介紹,需要的朋友可以參考下
    2021-06-06

最新評論