从 R 完全结束 RSelenium 会话(包括其所有组成部分)的“正确”方法是什么?
当使用 RSelenium 进行浏览器自动化时,有许多技术相互作用,有时会产生奇怪的错误,其中 R 会话中的所有内容都被清理,但某些底层 chrome / chromedriver / phantom.js / selenium /(其他?)进程还没有' t结束了。当尝试将来的 RSelenium 会话时,这可能会导致问题。
RSelenium 文档展示了两种关闭整个过程某些部分的方法:
close浏览器,然后是stop服务器:
# start a chrome browser
rD <- rsDriver()
remDr <- rD[["client"]]
remDr$navigate("http://www.google.com/ncr")
remDr$navigate("http://www.bbc.com")
remDr$close()
# stop the selenium server
rD[["server"]]$stop()
Run Code Online (Sandbox Code Playgroud)
删除rD(远程驱动程序)对象,并调用垃圾收集:
# start a chrome browser
rD <- rsDriver()
remDr <- rD[["client"]]
remDr$navigate("http://www.google.com/ncr")
remDr$navigate("http://www.bbc.com")
remDr$close()
# stop the selenium server
rD[["server"]]$stop()
Run Code Online (Sandbox Code Playgroud)
我发现的另一件事(来自关于 python 的类似问题)是rD$client$quit()
有了这些可用的方法,准确地说应该做什么(即最佳实践)来完全确保 RSelenium 会话(以及连接到该会话的每个进程 - 例如 chrome/chromedriver 等)已完全关闭,因此它不可能干扰与其他 RSelenium 会话?
我遇到了问题,Rselenium 会说(开始新会话时)端口仍在使用中,即使在问题中提到的关闭所有内容之后也是如此。
我从这里和这里发现你(至少在Windows上)还需要通过以下方式关闭Rstudio中的java会话:
system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)
Run Code Online (Sandbox Code Playgroud)
关闭会话并停止服务器并运行后gc()
| 归档时间: |
|
| 查看次数: |
1413 次 |
| 最近记录: |