Selenium操作Instagram评论框报错:AttributeError: 'NoneType'无send_keys属性
解决Selenium操作Instagram评论框出现的
AttributeError: 'NoneType' object has no attribute 'send_keys'问题 我来帮你拆解下问题根源,以及对应的解决办法:
错误的核心原因
你的代码里存在两个关键问题:
- 变量赋值逻辑错误:你把
driver.find_element_by_xpath(...).click()的结果赋值给了barra_commenti,但click()方法的返回值是None,这直接导致后续调用send_keys时,变量是None类型,触发报错。 - 定位元素对象错误:你定位的是评论框所在的
<form>元素,但实际需要输入内容的是嵌套在form里的<textarea>元素——form本身不支持send_keys输入操作。
修正后的代码方案
我们需要先激活评论框(点击form或textarea均可),再正确定位到textarea元素执行输入。另外,建议用WebDriverWait替代time.sleep,这能更可靠地等待元素加载完成,避免页面加载延迟导致的元素找不到问题。
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待评论框表单加载并点击激活 comment_form = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//form[.//textarea[@aria-label='Aggiungi un commento...']]")) ) comment_form.click() # 等待textarea元素可见并定位它 comment_textarea = WebDriverWait(driver, 10).until( EC.visibility_of_element_located((By.XPATH, "//textarea[@aria-label='Aggiungi un commento...']")) ) # 执行输入操作 comment_textarea.send_keys("ciao")
为什么手动用Selenium Chrome扩展操作正常?
手动操作时,你是直接点击并输入到textarea元素里,和代码里错误定位form、错误赋值变量的逻辑完全不同,所以不会出现问题。
你也可以简化代码,直接定位textarea并完成激活+输入:
comment_textarea = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//textarea[@aria-label='Aggiungi un commento...']")) ) comment_textarea.click() comment_textarea.send_keys("ciao")
内容的提问来源于stack exchange,提问作者Guest00001
相关产品推荐
相关产品推荐

