问题描述
从 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()
方法一
# 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 会说(在开始新会话时)一个端口仍在使用中,即使在问题中提到的关闭所有内容之后也是如此。
我从 here 和 here 发现您(至少在 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>