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

Selenium与ChromeDriver环境下AJAX调用失败问题求助

解决Selenium ChromeDriver点击按钮后AJAX请求失败的问题

针对你遇到的点击applynowbutton后AJAX调用极少成功的问题,可以通过以下Selenium配置和代码优化来解决:

1. 配置ChromeOptions模拟普通浏览器环境

网站可能通过检测自动化工具特征限制请求,配置ChromeOptions让Driver更接近普通Chrome的行为:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
# 禁用自动化检测特征
options.add_argument("--disable-blink-features=AutomationControlled")
# 设置与普通Chrome一致的用户代理(可从你的Chrome浏览器中复制)
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
# 启动最大化窗口,避免小窗口导致页面布局异常
options.add_argument("--start-maximized")
# 禁用扩展和弹窗拦截
options.add_argument("--disable-extensions")
options.add_argument("--disable-popup-blocking")

driver = webdriver.Chrome(options=options)

2. 用显式等待替代固定time.sleep

固定等待时间无法适配AJAX实际加载时长,改用Selenium显式等待可精准等待目标元素或AJAX完成:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
from selenium.common.exceptions import TimeoutException

# 等待按钮可点击后再点击
button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, 'applynowbutton'))
)
button.click()

# 等待目标元素出现,超时时间设为30秒
try:
    WebDriverWait(driver, 30).until(
        EC.presence_of_element_located((By.ID, 'howtoapply'))
    )
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, 'html.parser')
    checkHowToApplyDiv = soup.find_all("div", {"id": "howtoapply"})
    # 后续业务逻辑...
except TimeoutException:
    print("等待howtoapply元素超时")

3. 换用JavaScript点击或ActionChains模拟真实点击

如果原生click()方法触发异常,试试用JavaScript执行点击,或模拟鼠标移动后点击:

# JavaScript点击
driver.execute_script("document.getElementById('applynowbutton').click();")

# ActionChains模拟真实点击
from selenium.webdriver.common.action_chains import ActionChains

button = driver.find_element(By.ID, 'applynowbutton')
ActionChains(driver).move_to_element(button).click().perform()

4. 额外优化选项

若以上方法仍无效,可尝试添加以下Chrome参数:

  • --no-sandbox:禁用沙箱模式(适用于Linux环境)
  • --disable-dev-shm-usage:避免/dev/shm内存不足问题
  • --incognito:用无痕模式启动,避免缓存或Cookie干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:45:26