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

如何使用RSelenium点击JavaScript链接实现Excel文件自动下载

解决方法

你遇到的问题核心是两点:一是元素定位方式不准确,二是没有规避可能的浏览器下载弹窗拦截,以下是可直接运行的修正方案:

方案1:直接执行目标JS代码(最稳定,无需定位元素)

既然你已经知道下载按钮触发的是Open('xcl')这个JS函数,直接让浏览器执行这段代码即可,完全不需要定位按钮元素:

library(rvest)
library(RSelenium)

# 启动驱动,提前配置firefox无需确认直接下载csv/xls文件
eCaps <- list(
  firefox_profile = makeFirefoxProfile(
    list(
      browser.download.folderList = 2, # 自定义下载路径,2代表使用下面的路径
      browser.download.dir = "替换为你要存文件的本地路径,比如D:/download",
      browser.helperApps.neverAsk.saveToDisk = "application/vnd.ms-excel,text/csv,application/csv,text/comma-separated-values" # 遇到这几类文件直接下载不弹框
    )
  )
)

rD <- rsDriver(browser="firefox", port=4040L, verbose=F, extraCapabilities = eCaps)
remDr <- rD[["client"]]

remDr$navigate("https://sinca.mma.gob.cl/cgi-bin/APUB-MMA/apub.htmlindico2.cgi?page=pageFrame&header=Las%20Condes&macropath=./RM/D13/Cal/0001&macro=0001.diario.diario&from=970508&to=090312&")
Sys.sleep(5) # 等待页面加载完成

# 直接执行下载对应的JS代码,不需要定位元素
remDr$executeScript("Open('xcl');", args = list())
Sys.sleep(10) # 等待下载完成

# 关闭驱动
remDr$close()
rD$server$stop()

方案2:修正定位方式后点击元素

如果一定要用点击元素的方式,修正你之前的选择器写法即可,之前的css选择器引号嵌套错误导致定位失效:

# 替换你之前的定位代码即可,其它部分和方案1一致
# 用链接文本定位,更稳定
excel <- remDr$findElement(using = "link text", value = "Excel CSV")
# 可以先高亮确认选对了
excel$highlightElement()
# 点击
excel$clickElement()

以上两种方案都可以成功触发下载,优先选方案1即可,不需要考虑元素定位失效的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:45:06