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

Selenium操作SoundCloud搜索框触发element not interactable错误如何解决?

问题原因分析

出现element not interactable报错的核心原因是你获取到的input元素在执行send_keys时处于不可交互状态,具体到你的代码有以下两个明确错误:

  • 操作顺序颠倒:你先执行find_element_by_css_selector查找元素,之后才调用time.sleep(10)等待页面加载。页面刚调用get()加载的初始阶段DOM尚未完全渲染,此时查找拿到的元素是未激活、不可编辑的状态,后续等待10秒也不会更新已经获取到的元素对象的状态。
  • 未校验元素的可交互属性:直接查找元素没有判断是否可见、可编辑,有可能匹配到页面上隐藏的同类名input节点。
修复方案

将查找元素的逻辑放到等待之后,使用显式等待直接校验元素可交互状态再执行操作,修复后的代码示例如下:

from tkinter import *
import random
import urllib.request
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import requests
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options


driver = webdriver.Chrome(executable_path='/Users/quanahbennett/PycharmProjects/SeleniumTest/chromedriver')
url= "https://soundcloud.com/"
driver.get(url)

wait = WebDriverWait(driver, 30)

# 等待搜索框可交互再查找元素
attempt = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'input.headerSearch__input')))
# 可选操作:先点击激活搜索框再输入
attempt.click()
attempt.send_keys('Hello')

breakpoint()

#driver.quit()

如果修改后仍然报错,可以尝试用执行JS的方式直接给input赋值,规避前端交互限制:

driver.execute_script("arguments[0].value = 'Hello'", attempt)

内容的提问来源于stack exchange,提问作者drakepolo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:15:03