【发布时间】:2021-02-26 05:28:45
【问题描述】:
从 R 中完全结束 RSelenium 会话(包括其所有组成部分)的“正确”方法是什么?
背景
当使用 RSelenium 进行浏览器自动化时,有许多技术相互作用,有时会产生奇怪的错误,其中 R 会话中的所有内容都被清理了,但是一些底层 chrome / chromedriver / phantom.js / selenium /(其他?)进程还没有结束。这可能会在将来尝试 RSelenium 会话时导致问题。
到目前为止我所知道的
RSelenium docs,展示了关闭整个流程某些部分的两种方法:
方法一
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()
方法一
移除rD(远程驱动)对象,并调用垃圾回收:
# if user forgets to stop server it will be garbage collected.
rD <- rsDriver()
rm(rD)
gc(rD)
我发现的另一件事 (from a similar question about python) 是 rD$client$quit()
问题
有了这些可用的方法,确切地说应该做什么(即最佳实践)以完全确保 RSelenium 会话(以及连接到该会话的每个进程 - 例如 chrome/chromedriver 等)已完全关闭,所以它不可能干扰其他 RSelenium 会话?
【问题讨论】:
-
好例子here