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

Selenium+Python+Chrome Driver调用send_keys报错的问题排查

提问:Selenium调用send_keys报错AttributeError: 'list' object has no attribute 'send_keys'

我查了文档觉得设置没问题,但一直报这个错:

line 29, in <module>
    username.send_keys(cred_username)
    ^^^^^^^^^^^^^^^^^^
AttributeError: 'list' object has no attribute 'send_keys'

目前能完成的操作:

  • 加载并访问页面
  • 绕过浏览器安全拦截
  • 加载登录界面,但无法输入凭据

初始代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

cred_username = "username"
cred_password = "password"

s_1=Service("my driver location")
driver = webdriver.Chrome(service=s_1)

driver.get("https:website")

# Hurdle 01 Start : get past security step.
advanced = driver.find_element(By.ID, "details-button")
advanced.click()

proceed = driver.find_element(By.ID, "proceed-link")
proceed.click()
# Hurdle 01 Finish : 

# Hurdle 02 Start : logging in
username = driver.find_elements(By.ID, "idUsername")
username.clear()
username.send_keys(cred_username)
password = driver.find_element(By.ID, "idPassword")
password.clear()
password.send_keys(cred_password)
password.send_keys(Keys.RETURN)

time.sleep(99)

我试过把变量设为字符串,还是报同样的错;也试过用send_keys_to_element(element, *keys_to_send),还换了XPATH定位,结果都一样。麻烦帮忙指出错误,或者给相关讲解内容,谢谢。我的需求是输入登录信息进入上传文档的页面,这是整个流程里唯一需要键盘输入的步骤。


更新1:修改find_elements后出现新错误

感谢Prophet的回复,我把find_elements的s去掉了,又试了XPATH,结果出现新错误:

File "/Users/jace/Desktop/Filing_Cabinet/Python_Folder/my_phone_config01.py", line 27
    username = driver.find_element(By.XPATH, "//input[@id="Username"]")
                                             ^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?
[Finished in 25ms with exit code 1]

更新2:附页面截图


问题已解决:最终更新

Prophet提醒我可能需要等待页面完全加载,这正是我定位元素失败、调用send_keys报错的原因。添加等待后,脚本能正常定位到加载完成的元素,代码如下:

# Step 03 Start : logging in
try: 
    username = WebDriverWait(driver, 5).until(
        EC.presence_of_element_located((By.XPATH, "//input[@id='idUsername']"))
    )
    username.send_keys(cred_username)
 
    password = WebDriverWait(driver, 5).until(
        EC.presence_of_element_located((By.XPATH, "//input[@id='idPassword']"))
    )
    password.send_keys(cred_password)
    password.send_keys(Keys.RETURN)
# Step 03 End : need to add wait commands/let the page load.
finally:
    time.sleep(30)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:15:42