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

如何在Selenium Python中获取页面跳转后的下一个重定向URL

Selenium验证码提交后URL跳转判断失效修复方案

核心问题原因

EC.url_changes()方法的作用是等待当前页面URL与传入的参考URL不一致,你错误传入了预期跳转后的目标URL,导致判断逻辑完全反向。如果提交后真的跳转到你传入的地址,url_changes反而会认为URL没有发生符合预期的变化,触发超时异常。

修复后的实现逻辑

  • 第一步:提交验证码前先记录当前页面的URL作为基准参考
  • 第二步:执行验证码填写、提交按钮点击操作
  • 第三步:将基准URL传入url_changes等待URL变化即可
  • 若需要明确校验跳转后的目标URL是指定地址,可替换为EC.url_to_be('预期的目标URL')

修正后代码示例

# 提交验证码前先记录当前页面URL
old_url = self.driver.current_url
# 执行验证码填写操作
self.Fill_captcha_function()
# 点击提交按钮(此处替换为你实际的提交按钮定位逻辑)
self.driver.find_element(By.ID, 'captcha_submit_btn').click()

try:
    # 传入旧URL作为参考,等待URL发生变化,超时时间建议调整为5-10秒避免网络波动误判
    WebDriverWait(self.driver, 5).until(EC.url_changes(old_url))
    print('Captcha Accepted')
    # 如需确认跳转后的URL是指定地址,可新增以下判断
    # WebDriverWait(self.driver, 3).until(EC.url_to_be('https://www.target-url.com/'))
except TimeoutException:
    print('[Captcha Error : Solving captcha code]')
    # 验证失败重新触发验证码填写逻辑
    self.Fill_captcha_function()

额外优化建议

  • 提交按钮点击前建议增加EC.element_to_be_clickable()等待,确保按钮处于可点击状态再触发提交,避免点击操作不生效
  • 若页面跳转存在重定向链,可等待页面核心元素加载完成后再获取最终URL,避免取到中间重定向地址
  • 如验证码提交后是新开标签页跳转,需要先切换到新标签页再判断URL

内容的提问来源于stack exchange,提问作者Bijaya Kumar Tiadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:15:03