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

Selenium-Wire+Python点击按钮时Chrome驱动莫名关闭且无报错求助

问题分析与解决方案

核心问题排查

  1. 参数传递错误:header_data函数定义需要url, ip, num三个参数,但调用时只传了ipa, msisdn两个参数且顺序颠倒,直接导致函数调用失败,程序异常退出却未被捕获,表现为驱动窗口直接关闭且无报错。
  2. Selenium-Wire导入错误:若使用Selenium-Wire,必须导入其专属的webdriver,而非普通Selenium的webdriver,否则header_overrides属性不存在,会触发隐式错误。
  3. URL占位符未替换:urls = 'https://affnet.gotrackier.com/t/MjM1XzI4MA/?p1={tid}'中的{tid}未替换为实际值,会导致访问无效URL。
  4. 错误捕获范围不足:仅捕获NoSuchElementException,未覆盖参数错误、属性不存在等其他异常,无法定位根本问题。
  5. 无效请求头配置:Access-Control-Allow-*系列是服务器响应头,不需要在请求中设置,属于无效配置。

修正后的代码

from seleniumwire import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
import time

def header_data(url, ip, num):
    # Windows系统需将路径改为'chromedriver.exe'
    driver = webdriver.Chrome(executable_path='chromedriver')
    
    # 仅保留请求中需要的头信息
    driver.header_overrides = {
        'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/103.0.5060.63 Mobile/15E148 Safari/604.1',
        'X-FORWARDED-FOR': str(ip),
        'MSISDN': str(num),
        'Cache-Control':'no-cache, must-revalidate, private',
        'X-FRAME-OPTIONS':'SAMEORIGIN'
    }
    
    driver.implicitly_wait(10)  # 提前设置全局隐式等待
    driver.get(url)
    
    try:
        driver.find_element(by=By.XPATH, value='//*[@id="verifyformbuttonAR"]').click()
        time.sleep(2)  # 点击后短暂等待页面响应
    except NoSuchElementException:
        print("按钮未找到")
    except Exception as e:
        print(f"发生错误: {str(e)}")
    
    driver.quit()

def had_val():
    tid = "你的实际tid值"  # 替换为真实的tid参数
    urls = f'https://affnet.gotrackier.com/t/MjM1XzI4MA/?p1={tid}'
    ipa = '82.199.218.82'
    msisdn = '9647701195006'
    header_data(urls, ipa, msisdn)  # 按正确顺序传递参数

had_val()

关键修改说明

  • 修正参数传递:按url, ip, num的顺序传递完整参数,解决函数调用失败问题。
  • 正确导入依赖:使用from seleniumwire import webdriver,确保header_overrides属性生效。
  • 清理无效配置:删除Access-Control-Allow-*系列响应头,避免无效请求配置。
  • 优化等待逻辑:将implicitly_wait提前设置,作用于整个会话;移除无意义的time.sleep(5),提升效率。
  • 扩大异常捕获:添加全局异常捕获,便于在终端查看具体错误信息,快速定位问题。
  • 修复URL问题:替换{tid}占位符为实际值,确保访问有效URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:06:33