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

使用Selenium Python登录Etsy时登录按钮无响应问题

问题解决思路及修正代码

核心问题分析

你的代码里有两个致命错误导致点击无反应:

  • 变量名冲突:你先用email存储邮箱字符串,之后又把它赋值为邮箱输入框的元素对象,最后send_keys(email)实际传入的是元素对象而非邮箱地址,这会导致输入内容异常,Etsy的登录验证失败,按钮自然不会触发跳转。
  • 点击方法未执行:driver.find_element(...).click只是引用了点击方法,没有调用它,必须写成.click()才会执行点击操作。

额外优化建议

直接用time.sleep等待页面加载不可靠,建议改用Selenium的显式等待,确保元素处于可交互状态后再操作,避免因页面加载延迟导致的问题。

修正后的完整代码

import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By

site = "https://www.etsy.com/signin"
email_str = "email@mail.com"  # 改名避免和元素变量冲突
password_str = "password"

options = uc.ChromeOptions()
driver = uc.Chrome(options=options)
driver.get(site)

# 显式等待邮箱输入框可交互
email_input = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "join_neu_email_field"))
)
email_input.send_keys(email_str)

# 显式等待密码输入框可交互
password_box = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "join_neu_password_field"))
)
password_box.send_keys(password_str)

# 显式等待登录按钮可点击后执行点击
signin_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//button[@class="btn btn-large width-full btn-primary" and @value="sign-in"]'))
)
signin_btn.click()

time.sleep(5)
driver.quit()  # 建议最后关闭浏览器

其他注意点

  • 确保undetected_chromedriver是最新版本,避免因版本兼容问题被Etsy的反爬机制拦截。
  • 如果仍然出现无反应,可能需要检查是否有验证码或其他反爬验证步骤,这种情况下需要额外处理验证码逻辑。

内容的提问来源于stack exchange,提问作者jame the spear

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:40:37