无论端口打开/关闭,启动 RSelenium 浏览器

Nea*_*sch 5 selenium r ropensci rselenium

问题:是否有一个函数可以在尚未打开的情况下打开 selenium 浏览器,或者关闭当前浏览器并重置端口并重新启动浏览器?

理由:我在 RSelenium 中处理偶尔会崩溃的大循环,因此有时我不知道循环代码中端口是否打开或浏览器是否打开。我想要一个 RSelenium 启动器,无论浏览器是否打开或端口是否正在使用,它都会启动浏览器。

尝试:我使用 tryCatch() 尝试了这种方法,但如果我尝试启动它两次,我仍然会收到 wdman 错误,表明端口已打开:

browserpreference <- "chrome"
tryCatch({rD <- rsDriver(port = 4444L, browser = paste0(browserpreference))}
  ,error=function(rD,remDr){
          try(remDr$close(), silent=T)
          try(rD$server$stop(),silent=T)
          try(suppressWarnings(rm(rD, envir = .GlobalEnv)), silent=T)
          try(suppressWarnings(rm(remDr, envir = .GlobalEnv)), silent=T)
          gc()
          rD <- rsDriver(port = 4444L, browser = paste0(browserpreference))
        })
Run Code Online (Sandbox Code Playgroud)

如果我尝试两次,我会收到此错误:

Error in wdman::selenium(port = port, verbose = verbose, version = version,  : 
  Selenium server signals port = 4444 is already in use.
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 0

我遇到了这个问题,这是因为每个孤立端口都留下了一个java运行时。杀死其中每一个都会释放端口。使用以下命令终止留下的 java 运行时:

system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)
Run Code Online (Sandbox Code Playgroud)