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

Selenium点击按钮触发请求时出现「请求的URL在服务器上未找到」错误

问题分析与解决方案

问题概述

在网站https://www1.mbrace.or.jp/od2/B/dindex.html上执行Selenium代码时,前序步骤(切换frame、选择月份、输入日期)都正常,但点击input类型的「ダウンロード開始」按钮后,页面返回「The requested URL was not found on this server」,代码无报错。

解决思路与步骤

  • 修正Frame切换逻辑
    代码中通过src="none.html"定位JYOU frame可能存在问题——该frame的src会随月份选择动态更新,并非固定值。直接通过name属性切换frame更可靠:

    driver.switch_to.frame("JYOU")
    

    点击按钮前,务必确认当前处于正确的frame上下文,避免页面刷新导致上下文丢失。

  • 替换硬编码Sleep为显式等待
    不要依赖sleep()等待页面加载,改用显式等待确保元素或表单完全就绪:

    # 等待按钮所在的表单加载完成
    wait.until(EC.presence_of_element_located((By.TAG_NAME, "form")))
    
  • 尝试JavaScript点击按钮
    部分场景下,Selenium原生click()会因元素覆盖、JS事件绑定异常失效,改用JS执行点击:

    driver.execute_script("arguments[0].click();", button)
    
  • 模拟按钮的原生JS事件
    查看页面源码,确认按钮的onclick绑定的函数(比如downloadStart()),直接调用该函数触发下载:

    driver.execute_script("downloadStart();")
    
  • 核对请求参数
    手动点击按钮时,通过浏览器开发者工具的「网络」面板查看请求URL和参数,对比代码执行时的请求差异,确保月份、日期等参数正确传递。

修改后的示例代码

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

driver = webdriver.Edge()
url = 'https://www1.mbrace.or.jp/od2/B/dindex.html'
driver.get(url)
wait = WebDriverWait(driver, 20)

# 切换到月份选择frame
driver.switch_to.frame("menu")
select = Select(wait.until(EC.presence_of_element_located((By.NAME, 'MONTH'))))
select.select_by_value('202311')

driver.switch_to.default_content()

# 切换到日期输入frame
driver.switch_to.frame("JYOU")
input_day = wait.until(EC.presence_of_element_located((By.NAME, 'MDAY')))
input_day.send_keys('01')

# 等待表单就绪
wait.until(EC.presence_of_element_located((By.TAG_NAME, "form")))

# 定位按钮并通过JS点击
button = wait.until(EC.element_to_be_clickable((By.XPATH, '//input[@type="BUTTON" and @value="ダウンロード開始"]')))
driver.execute_script("arguments[0].click();", button)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:43:12