You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Selenium库时遭遇ElementNotInteractableException异常求助

Fixing ElementNotInteractableException for Temple University Portal Login

Hey there, I’ve dealt with this exact Selenium error more times than I can count—let’s walk through the most likely fixes for your Temple portal login script.

1. Wait for the Element to Be Actually Interactable

The most common culprit here is that your script is trying to interact with the username/password fields before they’re fully ready to accept input. Just because the element exists in the DOM doesn’t mean it’s clickable or editable yet.

Replace your direct find_element_by_id calls with explicit waits that check for interactability:

from selenium import webdriver
from info import user_name, pass_word
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time

driver = webdriver.Firefox()
driver.get('https://tuportal.temple.edu/')

# Wait up to 10 seconds for the username field to be clickable
username = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "username"))
)
# Do the same for the password field
password = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "password"))
)

# Now you can safely send keys
username.send_keys(user_name)
password.send_keys(pass_word)

Often, university portals load cookie consent banners or welcome popups that block the login fields. Even if you don’t see them immediately, they might be rendering briefly before your script runs.

Add a quick check to dismiss any such elements first:

driver = webdriver.Firefox()
driver.get('https://tuportal.temple.edu/')

# Handle cookie banners (adjust the selector to match the portal's actual button)
try:
    cookie_accept_btn = WebDriverWait(driver, 5).until(
        EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Accept All')]"))
    )
    cookie_accept_btn.click()
except:
    # No cookie banner? No problem, just move on
    pass

# Now wait for and interact with login fields
username = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "username"))
)
# ... rest of your code

3. Verify the Login Fields Aren’t in an Iframe

Some portals nest their login forms inside an <iframe> element. If that’s the case, Selenium can’t interact with elements inside the iframe unless you explicitly switch to it first.

Check the page’s HTML for iframes, then add this step:

driver = webdriver.Firefox()
driver.get('https://tuportal.temple.edu/')

# Switch to the iframe containing the login form (adjust the selector if needed)
login_iframe = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.TAG_NAME, "iframe"))
)
driver.switch_to.frame(login_iframe)

# Now find the username/password fields
username = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "username"))
)
# ... rest of your code

# After interacting with the form, switch back to the main page if needed
# driver.switch_to.default_content()

4. Wait for the Entire Page to Load

If the portal uses heavy JavaScript to render content, even explicit waits might fail if the page isn’t fully loaded. Add a check for the document ready state:

driver = webdriver.Firefox()
driver.get('https://tuportal.temple.edu/')

# Wait for the page to finish loading completely
WebDriverWait(driver, 10).until(
    lambda d: d.execute_script('return document.readyState') == 'complete'
)

# Proceed with locating elements
# ...

Start with the first fix (waiting for interactability)—that’s the solution that works 90% of the time for this error. If that doesn’t resolve it, move on to checking for popups or iframes.

内容的提问来源于stack exchange,提问作者John Antonio Mancini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:59:56