完全结束 RSelenium 会话的正确方法? 背景目前我所知道的方法一方法一问题

问题描述

从 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 会话?

解决方法

我遇到了一些问题,Rselenium 会说(在开始新会话时)一个端口仍在使用中,即使在问题中提到的关闭所有内容之后也是如此。

我从 herehere 发现您(至少在 Windows 上)还需要通过以下方式关闭 Rstudio 中的 java 会话:

:value="item.key

之后关闭会话并停止服务器并运行<td> <label class="radio_custom" v-for="(item,index) in codeVo.codeObsTypeList" :key="index"> <input type="radio" v-model="userParam.prdtType" :value="item.key"> <i></i> <span class="txt" v-text="item.txt"></span> </label> </td>