R闪亮-在后台运行应用程序,并用代码发出UI控件



我正在为我的Shiny应用程序包编写一个小插曲。在我的小插曲的开头,我找到了一个名为screenshots.R的文件,它生成了我的应用程序的漂亮屏幕截图。我是这样生产的:

webshot::appshot(mypackage::run_datepicker_app(),
file = "man/figures/datepicker.png", vwidth = 500, vheight = 200)

这很好用,它给了我一个很好的屏幕截图,在本例中是两个dateInput字段。然而,我希望能够获得一张正在使用的dateInput的屏幕截图(比如,暴露了日历选择(。

有没有一种方法可以在脚本中向应用程序对象发出命令,这样我就可以获得正在使用的应用程序的屏幕截图,而不必手动执行?

您是否尝试过使用shinytest包中的ShinyDriver

您可以使用shinytest让无头浏览器运行应用程序,与之交互,并以编程方式进行屏幕截图。如果您没有安装phantomJS,那么在使用ShinyDriver之前需要运行shinytest::installDependencies()。你所需要做的就是将它指向一个包含闪亮应用程序的目录(在我的情况下,文件夹是"myApp"(。

install.packages("shinytest")
shinytest::installDependencies()
app <- shinytest::ShinyDriver$new("myApp")
app$takeScreenshot("screenshot1.png")
button <- app$findElement("#button")
button$click()
Sys.sleep(1)
app$takeScreenshot("screenshot2.png")                
app$stop()

我在无头浏览器中启动该应用程序,截图,找到id为"button"的按钮,点击它,再截图一次,然后关闭该应用程序。使用"#id";,其中id就是您提供闪亮输入的id。您可以在takeScreenshot调用中指定png文件的文件路径,这样您就可以在其他地方的代码中使用它们。请注意,在UI更新之前,您可能需要使用Sys.sleep来停止屏幕截图。

最新更新