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

Selenium开发Instagram自动登录脚本调用send_keys触发NoneType报错如何解决

问题定位与修复方案

1 核心报错原因

你遇到的AttributeError: 'NoneType' object has no attribute 'send_keys'报错来自登录逻辑的最后一行代码:

LoginPassword = ui.WebDriverWait(driver, 10).until(ec.element_to_be_clickable((By.NAME, "password"))).send_keys(InstagramPassword).send_keys(Keys.ENTER)

Selenium 中的send_keys()方法没有返回值(默认返回None),你在第一个send_keys(InstagramPassword)之后直接链式调用第二个send_keys(Keys.ENTER),相当于对None调用方法,自然会触发报错。
另外你写的用户名输入行也存在冗余问题:send_keys返回None,赋值给LoginUsername变量没有实际意义,只是没有调用后续方法所以没触发报错。

2 其他隐藏问题

还有一行代码存在逻辑错误:

RandomnessTime = WebDriverWait(driver, (1 - int(RandomnessTime)))

WebDriverWait 的第二个参数是最长等待超时时间,必须为正整数,如果你输入的 RandomnessTime 大于1,这里会得到负数,直接抛出参数错误。如果你的本意是等待随机时间,应该用time.sleep()配合随机数模块,而不是 WebDriverWait。

3 修正后的代码

# Importing
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
import time
import random
from selenium.webdriver.support import ui

# Setting everything up
service = Service("\Program Files (x86)\chromedriver.exe")

# Program Starts
RandomnessTime = input("Select Randomness time:")
InstagramUsername = input("Enter Username:")
InstagramPassword = input("Enter Password:")

driver = webdriver.Chrome(service=service)
driver.get('https://www.instagram.com/')
wait = ui.WebDriverWait(driver, 10)
driver.maximize_window()
# 同意cookie
wait.until(ec.element_to_be_clickable((By.CSS_SELECTOR, ".aOOlW.bIiDR"))).click()
# 随机等待
wait_seconds = random.randint(1, int(RandomnessTime))
time.sleep(wait_seconds)

# Logging in
# 输入用户名
username_input = ui.WebDriverWait(driver, 10).until(ec.element_to_be_clickable((By.NAME, "username")))
username_input.send_keys(InstagramUsername)
# 输入密码+提交
password_input = ui.WebDriverWait(driver, 10).until(ec.element_to_be_clickable((By.NAME, "password")))
password_input.send_keys(InstagramPassword)
password_input.send_keys(Keys.ENTER)

# Clicking "Not Now".
ui.WebDriverWait(driver, 10).until(ec.element_to_be_clickable((By.CSS_SELECTOR, ".aOOlW.HoLwm"))).click()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:15:02