Selenium Python操作Chrome时Send_keys()无法输入整数值的问题求助
Selenium Python操作Chrome时Send_keys()无法输入整数值的问题求助
Hey 朋友!刚接触Python和Selenium遇到这种问题很正常,咱们先拆解下问题,再一步步解决~
首先你碰到的ElementNotInteractableException,核心原因是你定位到的元素不是可输入的input框,而是td单元格——td本身是不可交互输入的,所以点击和send_keys操作自然会报错。
你之前的代码用XPath定位了'Arrow Shirts'的兄弟td,然后对这个td做操作,但实际能输入数量的是td内部的<input>标签,得把定位目标改成这个输入框才行。
修正后的解决方案
根据你提供的输入框属性,给你两种可靠的定位方式,选一种用就行:
方式1:通过产品名称关联定位输入框(推荐,适配产品位置变化)
这种方式会先找到'Arrow Shirts'的文本元素,再定位它旁边td里的输入框,不管产品在表格里的位置怎么变,都能精准对应:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待输入框加载完成并可交互 qty_input = WebDriverWait(driver, 30).until( EC.element_to_be_clickable((By.XPATH, "//*[text()='Arrow Shirts']/following-sibling::td//input[@type='text']")) ) # 先清空输入框(避免原有默认值干扰) qty_input.clear() # 输入数量 qty_input.send_keys('3')
方式2:直接通过input的name属性定位
如果这个输入框的name属性是固定不变的,也可以直接用name定位,更简洁:
qty_input = WebDriverWait(driver, 30).until( EC.element_to_be_clickable((By.NAME, "ctl00$ContentPlaceHolder1$PRODUCTS$ctl02$tbox")) ) qty_input.clear() qty_input.send_keys('3')
额外排查点(如果还是不行的话)
- 检查页面有没有iframe:如果输入框嵌套在iframe里,得先切换到iframe才能定位元素,比如
driver.switch_to.frame("iframe的id或name") - 看看有没有加载遮罩/弹窗遮挡:有些页面加载时会有遮罩层,得等遮罩消失后再操作输入框,可以加个等待遮罩不可见的步骤
- 不需要额外点击td:直接定位到input后,clear+send_keys就够了,除非输入框必须点击才会激活(这种情况很少见)
备注:内容来源于stack exchange,提问作者logziii
相关产品推荐
相关产品推荐

