亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python Selenium常見的報(bào)錯(cuò)問題以及措施

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

Selenium的常見報(bào)錯(cuò)主要包括以下幾種

1.NoSuchElementException

當(dāng)Selenium無法在DOM中找到元素時(shí),會(huì)拋出此異常。這通常是因?yàn)樵夭淮嬖诨蛘唔撁孢€未完全加載。    

解決方法:

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

2.TimeoutException

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

解決方法:

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

3.WebDriverException

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

解決方法:

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

4.StaleElementReferenceException

當(dāng)引用的元素已經(jīng)不在DOM中時(shí),會(huì)拋出此異常。這通常是因?yàn)轫撁嬉呀?jīng)刷新或者元素已經(jīng)被刪除。    

解決方法:

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

5.NoSuchFrameException

當(dāng)試圖切換到不存在的frame時(shí),會(huì)拋出此異常。    

解決方法:

  • 嘗試從根節(jié)點(diǎn)重新依次定位到該frame標(biāo)簽

6.NoSuchWindowException

當(dāng)試圖切換到不存在的窗口時(shí),會(huì)拋出此異常。

解決方法:

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

7.ElementNotVisibleException

當(dāng)試圖與不可見的元素交互時(shí),會(huì)拋出此異常。    

解決方法:

  • 等待該元素可見
  • 使用JavaScript或者jQuery來改變?cè)氐目梢娦?/li>
  • 滾動(dòng)到元素
  • 使用ActionChains模擬用戶交互,例如鼠標(biāo)懸停、拖放等

8.ElementNotInteractableException

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

解決方法:

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

解決的代碼示例

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異常,當(dāng)異常發(fā)生時(shí),你可以記錄錯(cuò)誤信息,或者執(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進(jìn)行交互硬剛

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

7. 使用JavaScript或者jQuery來改變?cè)氐目梢娦?/p>

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

8. 滾動(dòng)到元素

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é)

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

相關(guān)文章

最新評(píng)論