gpt4 book ai didi

Rselenium 无法连接到正在运行的 Shiny 应用程序

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

我在 docker 中配置了 selenium 服务器。它工作正常 - 我可以连接到它,但是当我想与正在运行的本地 Shiny 应用程序进行交互时,Rselenium 没有看到它。详情如下:

我是一步一步来的:

  • 我运行 Selenium 服务器:
    docker run -d -p 4445:4444 selenium/standalone-chrome
  • 成功连接 Selenium 服务器:
  • remDr <- remoteDriver(remoteServerAddr = "localhost"
    , port = 4445L
    , browserName = "chrome"
    , platform = "MAC")
    > remDr$open()
    [1] "Connecting to remote server"
  • 从终端运行 Shiny 的应用程序(在单独的 r session 中):
  • > shiny::runApp(file.path(find.package("RSelenium"), "apps", "shinytestapp"), port = 6012)
    Listening on http://127.0.0.1:6012
  • 然后尝试做一些测试:
  • remDr$navigate("localhost:6012")
    appTitle <- remDr$getTitle()[[1]]
    expect_equal(appTitle, "Shiny Test App")

    并得到错误:
    Error: 'appTitle' not equal to "Shiny Test App".
    1/1 mismatches
    x[1]: "localhost"
    y[1]: "Shiny Test App"
  • 毕竟我截图了:
  • remDr$screenshot(display = TRUE)
    它看起来像这样:

    enter image description here

    你知道为什么 RSelenium 没有看到本地运行的 Shiny 应用程序吗?

    最佳答案

    我用 弄明白了来自@jdharrison 的很多帮助 .

    首先制作docker compose文件(注意缩进——一个缩进必须是2个空格)并保存为docker-compose.yml :

    version: '2'
    services:
    ropensci:
    image: rocker/ropensci
    ports:
    - "8788:8787"
    links:
    - selenium:selenium
    - shiny:shiny
    selenium:
    image: selenium/standalone-chrome
    ports:
    - "4445:4444"
    links:
    - shiny:shiny
    shiny:
    image: rocker/shiny
    container_name: shiny
    volumes:
    - ~/Users/username/services/volumes/shiny/apps:/srv/shiny-server/
    - ~/Users/username/services/volumes/shiny/logs:/var/log/
    - ~/Users/username/services/volumes/shiny/packages:/home/shiny/

    或下载: https://codeshare.io/2j4yLB

    然后运行 ​​ docker-compose up从文件夹中 docker-compose.yml文件是。
  • 将您的应用添加到 /home/username/services/volumes/shiny/apps
  • 要从 selenium 导航到您的应用程序,请使用 http://shiny:3838/myapp

  • 要检查它是否有效,您可以将以下代码另存为 app.R在: ~/Users/username/services/volumes/shiny/apps/example/ :
    library(shiny)
    server <- function(input, output) {
    output$distPlot <- renderPlot({
    hist(rnorm(input$obs), col = 'darkgray', border = 'white')
    })
    }
    ui <- fluidPage(
    sidebarLayout(
    sidebarPanel(
    sliderInput("obs", "Number of observations:", min = 10, max = 500, value = 100)
    ),
    mainPanel(plotOutput("distPlot"))
    )
    )
    shinyApp(ui = ui, server = server)

    并运行:
    library(RSelenium) 
    remDr <- remoteDriver(remoteServerAddr = "selenium", port = 4444L, browser = "chrome")
    remDr$open()
    remDr$navigate(url = "http://shiny:3838/example")
    remDr$screenshot(display = TRUE)

    如果一切正常,您应该会看到屏幕截图:
    enter image description here

    关于Rselenium 无法连接到正在运行的 Shiny 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45850278/

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