web-dev-qa-db-fra.com

RSelenium: le port des signaux du serveur est déjà utilisé

J'utilise le code suivant dans RSelenium pour ouvrir un navigateur. Après avoir fermé le navigateur, ou même fermé le gestionnaire en exécutant remDr $ close (), le port est toujours utilisé. Je dois aller sur le terminal et tuer manuellement le processus afin que le même port devienne disponible. Existe-t-il un moyen automatisé pour que RSelenium libère le port une fois qu'il a fini de gratter?

Voici donc mon code:

library(RSelenium)
rD <- rsDriver(verbose = FALSE,port=4444L)
remDr <- rD$client
remDr$close()

Merci

14
Mohammad

Le processus est composé de deux parties: un serveur (le serveur Selenium) et un client (le navigateur que vous lancez). La méthode close de la classe remoteDriver ferme le client (le navigateur). Le serveur doit également être arrêté lorsque vous avez terminé.

Pour arrêter le serveur lorsque vous avez terminé:

library(RSelenium)
rD <- rsDriver(verbose = FALSE,port=4444L)
remDr <- rD$client
remDr$close()

Maintenant, arrêtez explicitement le serveur:

rD$server$stop()

ou si l'objet rD est supprimé, le serveur sera arrêté lors du garbage collection:

library(RSelenium)
rD <- rsDriver(verbose = FALSE,port=4444L)
remDr <- rD$client
remDr$close()
rm(rD)
gc()
19
jdharrison

Ce qui a fonctionné pour moi, ce n’est pas d’appeler du tout, mais d’appeler juste.

rD <- rsDriver(port = 4444L)
remDr <- rD[["client"]]
remDr$close()
rm(rD)
gc()

EDIT: Nevermind - cela a fonctionné plusieurs fois la semaine dernière, puis n'a plus fonctionné.

1
boutitdoubtit