使用 Rselenium 从新选项卡下载文件时出现问题

Problem downloading file from a new tab with Rselenium

我是 Rselenium 的新手,我意识到在 python 或 java 中有很多关于 selenium 问题的帮助,但在 R 中没有。我正在尝试下载 excel来自该网站的文件:

http://app.ceplan.gob.pe/ConsultaCEPLAN/Reporte/Maestro/rptMaestroObjetivo.aspx?pAnoEje=2022&pTipoGobierno=E&pSector=10&pPliego=510

我正在使用码头工人,我得到了这段代码:

shell('docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.141.59-20200326')

remDr = remoteDriver(
  remoteServerAdd = "localhost",
  port = 4444L,
  browser = "chrome"
)

remDr$open()

然后我设置我感兴趣的网页:

remDr$navigate("http://app.ceplan.gob.pe/ConsultaCEPLAN/Reporte/Maestro/rptMaestroObjetivo.aspx?pAnoEje=2022&pTipoGobierno=E&pSector=10&pPliego=510")

然后我需要 select 软盘图标,之后,“excel”选项将生成另一个选项卡,然后保存 excel 文件(我已经配置 chrome 下载文件时不询问)。

所以当我检查 excel 选项的元素时,我得到了 xpath "//*[@id="ReportViewer1_ctl05_ctl04_ctl00_Menu"]/div[1]/a" 所以我用这个编码下一行以便单击“excel”选项下载我感兴趣的文件。

boton_guardar = remDr$findElement(using = "xpath", '//*[@id="ReportViewer1_ctl05_ctl04_ctl00_Menu"]/div[1]/a')
boton_guardar$clickElement()

控制台运行一切,但我没有得到任何结果。如果我在单击“excel”选项时手动进行练习,Chrome 打开一个新选项卡,下载文件,然后关闭新选项卡。

我想知道我的代码需要什么才能完成任务,或者我写错了什么。

提前致谢。

根据我的简短研究,它看起来像用 rselenium 下载文件 is an issue

如果点击下载后能找到url的方法,那么可以尝试使用download.file()

看起来像这样:

## your code to navigate to the page
shell('docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome:3.141.59-20200326')

remDr = remoteDriver(
  remoteServerAdd = "localhost",
  port = 4444L,
  browser = "chrome"
)

remDr$open()

remDr$navigate("http://app.ceplan.gob.pe/ConsultaCEPLAN/Reporte/Maestro/rptMaestroObjetivo.aspx?pAnoEje=2022&pTipoGobierno=E&pSector=10&pPliego=510")

## New code to click the link and get the URL of the file you want to download would go here, save the url as X

## Download the file
download.file(X, destfile = "Name you want to save file as.csv", method = "curl")

检查 here 如何使用 download.file() 函数

希望我的想法能让您走上正确的道路!

我能够通过

下载excel文件
library(RSelenium)
driver <- rsDriver(browser = c("chrome"), port = 4341L)
remDr <- driver$client

# Select the dropdown menu,

remDr$findElement(using = "xpath",'//*[@id="ReportViewer1_ctl05_ctl04_ctl00"]') -> dropdown
dropdown$clickElement()

# Select the Excel file 

remDr$findElement(using = "xpath",'//*[@id="ReportViewer1_ctl05_ctl04_ctl00_Menu"]/div[1]') -> exceldownload
exceldownload$clickElement()