使用 Rselenium 从新选项卡下载文件时出现问题
Problem downloading file from a new tab with Rselenium
我是 Rselenium 的新手,我意识到在 python 或 java 中有很多关于 selenium 问题的帮助,但在 R 中没有。我正在尝试下载 excel来自该网站的文件:
我正在使用码头工人,我得到了这段代码:
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()
我是 Rselenium 的新手,我意识到在 python 或 java 中有很多关于 selenium 问题的帮助,但在 R 中没有。我正在尝试下载 excel来自该网站的文件:
我正在使用码头工人,我得到了这段代码:
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()