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

如何使用Selenium和Python绕过弹窗并完成后续登录操作

Selenium登录失败问题修复方案

核心错误排查

  • 重复初始化Chrome浏览器:你先后调用了两次webdriver.Chrome(),相当于开了两个浏览器窗口,实际操作的是第二个窗口,多余的初始化容易引发状态异常
  • 年龄弹窗处理逻辑错误:该站点的年龄确认弹窗是当前页面内的浮层,不是新弹出的窗口,你写的切换新窗口逻辑完全多余,还会导致页面上下文错乱,后续找不到输入框
  • 元素定位语法过时:高版本Selenium已经废弃了find_element_by_name、find_element_by_xpath这类旧写法,你已经导入了By类,要用driver.find_element(By.属性名, 值)的新写法
  • 显式等待时间太短:你设置的WebDriverWait(driver,1)只等1秒,页面加载稍微慢一点就会超时找不到元素,至少设置为5-10秒更稳妥
  • 缺少credentials模块导入:你代码里直接用credentials.login获取账号密码,但完全没有导入这个模块,运行直接报错,新手可以先直接写死账号密码测试
  • 弹窗点击逻辑冗余:你重复点击了两次年龄确认按钮,实际只要点一次即可

修复后的可运行代码

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

# 只初始化一次Chrome即可,webdriver_manager和本地驱动二选一即可,这里用本地路径示例
PATH = "C:\Program Files\chromedriver.exe"
driver = webdriver.Chrome(PATH)
# 全局隐式等待设10秒,适配网络慢的情况
driver.implicitly_wait(10)

# 打开登录页
driver.get("https://www.finewineandgoodspirits.com/webapp/wcs/stores/servlet/LogonForm?langId=-1&storeId=10051&catalogId=10051")
time.sleep(1)

# 处理年龄确认弹窗,只点一次确认按钮即可
age_confirm_btn = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//span[contains(text(), "at least 21 years old.")]')))
age_confirm_btn.click()
time.sleep(1)

# 直接填写账号密码,不需要切换窗口,这里直接写你的账号密码即可,无需调用未导入的credentials模块
fwgsUsername = "candmidlik@yahoo.com"
fwgsPassword = "Password2"

# 等待邮箱输入框可点击后再输入内容
emailField = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "logonId")))
emailField.clear()
emailField.send_keys(fwgsUsername)

# 等待密码输入框可点击后再输入内容
passField = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "logonPassword")))
passField.clear()
passField.send_keys(fwgsPassword)

# 等待登录按钮可点击后再触发点击
loginBtn = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "loginButton")))
loginBtn.click()

新手操作提示

  • 先确认你的Chrome浏览器和chromedriver版本完全一致,不然会出现启动失败的问题
  • 如果运行时还是找不到元素,可以在对应元素上右键点击「检查」,确认元素的id、name属性和你写的一致
  • 不要随便加窗口切换逻辑,除非你手动操作的时候确实有新的浏览器标签页/窗口弹出,才需要处理切换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:36:03