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

Selenium Python报ElementNotInteractableException对象无尺寸位置问题

问题诱因
  • 定位范围无限制导致匹配到隐藏元素:你当前的xpath是全局匹配data-original-title为对应值的input,页面中可能存在多个符合该属性的输入框(比如卖出操作对应的同属性输入框默认隐藏),你实际定位到的是不可见的隐藏元素,因此没有有效尺寸和位置,无法交互。
  • 元素状态判断逻辑缺失:你选择完买卖方向后仅使用硬sleep等待,没有显式判断目标输入框是否已经渲染完成、处于可见可交互状态,部分场景下模态框内容重绘速度慢于硬等待时长,会导致拿到还没完成渲染的元素。
  • 交互逻辑不合理:使用ActionChains移动到元素后直接发送输入内容,没有提前激活输入框焦点,也可能触发交互失败。
解决方法

你提到的「先定位外层div点击再操作输入框」的方案是可行的,更稳妥的优化方案如下:

  1. 限制输入框的查找范围在当前已打开的交易模态框内,避免匹配到隐藏元素
  2. 替换硬sleep为显式等待,等待目标输入框可见后再操作
  3. 先点击激活输入框、清空原有默认值,再输入目标数值

修改后的代码示例:

# 把原来的sleep(3)及之后的代码替换为以下内容
# 显式等待模态框内的输入框可见,限制查找范围为交易模态框
amount_input = wait.until(EC.visibility_of_element_located((
    By.XPATH, 
    "//div[@id='trading-modal-root' and contains(@style,'block')]//input[@data-original-title='Wie viele Stück möchten Sie kaufen?']"
)))

# 先点击激活输入框,清空默认值,再输入内容
amount_input.click()
amount_input.clear()
amount_input.send_keys('33')

如果上述方案还是失效,可以尝试通过JS直接赋值,规避前端交互限制:

driver.execute_script("arguments[0].value = '33'", amount_input)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:54:02