Python Selenium驱动Opera访问Youtube搜索触发ElementNotInteractableException报错
报错原因
你遇到的ElementNotInteractableException报错,核心是定位到的DOM元素无法接收输入交互,具体诱因有三个:
- XPath匹配错误:YouTube页面存在多个id为
search的节点,你写的通用XPath优先匹配到了外层不可输入的<div>容器,而非实际可交互的输入框 - 元素未完成加载:调用
driver.get后立即执行定位操作,此时YouTube前端资源还没渲染完成,搜索框还处于不可交互状态 - 元素未激活:YouTube搜索框需要先点击激活,才能正常接收输入内容
解决方案
首先导入Selenium显式等待相关依赖:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By
替换原有YouTube操作的代码即可:
driver.get('https://youtube.com/') # 最长等待10秒,直到搜索输入框变为可点击状态 wait = WebDriverWait(driver, 10) # 明确指定匹配input类型的搜索框,避免定位到外层容器 input_txt = wait.until(EC.element_to_be_clickable((By.XPATH, '//input[@id="search"]'))) # 先点击激活输入框再输入内容 input_txt.click() input_txt.send_keys('operadriver') # 点击搜索按钮比直接回车兼容性更高 driver.find_element(By.XPATH, '//button[@id="search-icon-legacy"]').click()
额外注意事项
- 如果按上述修改还是报错,可以在
driver.get('https://youtube.com/')后加time.sleep(3)做验证,确认是否是网络加载过慢导致的问题 - 你当前使用的Opera浏览器和驱动版本都是93.x,版本配对是正常的,后续如果升级浏览器记得同步升级对应版本的operadriver
内容的提问来源于stack exchange,提问作者Al Baari
相关产品推荐
相关产品推荐

