Sobes.tech
Junior — Middle

Чӣ гуна метавон пешгирӣ кард пайдоиши NotInteractableException дар автоматизатсияи тест бо Selenium?

sobes.tech AI

Ҷавоб аз AI

Иловаи NotInteractableException дар Selenium вақте рух медиҳад, ки кӯшиши муошират бо унсур ғайриимкон аст — масалан, агар унсур нобинӣ бошад, бо унсури дигар пӯшонида шуда бошад ё ғайрифаъол бошад.

Барои пешгирӣ кардани ин хато, шумо метавонед:

  • Боварӣ ҳосил кунед, ки унсур нобинӣ ва барои муошират дастрас аст, бо истифода аз интизорӣҳои равшан (Explicit Wait) бо шароитҳои нобинӣ ё кликшаванда:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, 'element_id')))
element.click()
  • Санҷед, ки унсур бо унсурҳои дигар пӯшонида нашудааст (масалан, тирезаҳои поп-ап ё боркунии саҳифа).
  • Агар усулҳои стандартӣ кор накунанд, бо истифода аз JavaScript бо унсур муошират кунед:
driver.execute_script("arguments[0].click();", element)
  • Боварӣ ҳосил кунед, ки саҳифа пурра бор шудааст ва ҳамаи унсурҳои динамикӣ барои муошират омодаанд.

Истифодаи дурустии интизорӣ ва санҷиши ҳолати унсурҳо кӯмак мекунад, ки аз NotInteractableException пешгирӣ шавад.