gpt4 book ai didi

r - 如何使用RSelenium上传文件?

转载 作者:行者123 更新时间:2023-12-04 10:36:37 27 4
gpt4 key购买 nike

我试图找出如何使用 R/RSelenium 上传文件。信息:

  • 操作系统:Win 8.1,RSelenium_1.7.1,带有 docker 镜像(linux,standalone-chrome 3.2.0)。

  • 我尝试了这个 SO 问题的最高评论:

    How to upload file using Selenium WebDriver in Java

    例子:
    url <- "https://www.freepdfconvert.com/pdf-word"
    path <- "C:/path_to_folder/filename.pdf"

    remDr$navigate(url)

    upload_btn <- remDr$findElement(using = "id", "clientUpload")
    upload_btn$sendKeysToElement(path)

    但我收到以下错误消息:
    Selenium message:java.lang.String cannot be cast to java.util.List

    Error: Summary: UnknownError
    Detail: An unknown server-side error occurred while processing the command.
    class: java.lang.ClassCastException
    Further Details: run errorDetails method

    使用的文件夹映射到虚拟机。 汽车 是不可能的,因为它只适用于 Windows。

    也试过 upload_btn$sendKeysToElement(list(path))它不会返回错误,但它也不起作用。

    任何帮助表示赞赏。

    编辑 :

    我认为这应该有效,但在查看屏幕截图时出现错误:
  • 将我的工作文件夹安装到 default虚拟机作为共享文件夹并命名为 win_share
  • default 上创建了一个文件夹与 sudo mkdir vm_share
  • 已安装 win_share到文件夹 vm_sharesudo mount -t vboxsf win_share vm_share .在这一步之后,我可以成功访问我在虚拟机上的工作文件夹(由 ssh 检查到 default )。
  • vm_share 文件夹的路径是 /home/docker/vm_share

  • 在所有这些执行此脚本之后,它不起作用。 (以约翰为例)
    library(RSelenium)

    remDr <- remoteDriver(remoteServerAddr = "192.168.99.100"
    , port = 4445L
    , browserName = "chrome"
    )
    remDr$open()
    remDr$navigate("https://gallery.shinyapps.io/uploadfile")
    webElem <- remDr$findElement("id", "file1")

    # create a dummy csv
    x <- data.frame(a = 1:4, b = 5:8, c = letters[1:4])
    write.csv(x, file = "testcsv.csv", row.names = FALSE)

    # post the file to the app
    path <- "/home/docker/vm_share/testcsv.csv"
    webElem$sendKeysToElement(list(path))

    remDr$close()
    remDr$closeServer()

    截图 :

    Error

    最佳答案

    sendKeysToElement方法需要一个列表。路径需要作为列表传递:

    library(RSelenium)
    appURL <- "https://www.freepdfconvert.com/pdf-word"
    # create sample pdf
    tfile <- tempfile("sample", fileext = ".pdf")
    pdf(tfile,width=7,height=5)
    x=rnorm(100)
    y=rnorm(100,5,1)
    plot(x,lty=2,lwd=2,col="red")
    lines(y,lty=3,col="green")
    dev.off()

    rD <- rsDriver()
    remDr <- rD$client
    remDr$navigate(appURL)

    upload_btn <- remDr$findElement(using = "id", "clientUpload")
    upload_btn$sendKeysToElement(list(tfile))

    ......
    # cleanup when finished
    rm(rD)
    gc()

    另请参阅 RSelenium 中的演示包装本身 https://github.com/ropensci/RSelenium/blob/master/demo/selFileUpload.ROpenFileDialog in R Selenium

    关于r - 如何使用RSelenium上传文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43321408/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com