Webdriver: java.net.BindException: Adresse déjà en cours d'utilisation: se connecter
Lors de l'exécution de webdriver, à 3 minutes de course, j'obtiens l'exception suivante et Webdriver se bloque.
Je suis en utilisant un seul webdriver instance et un FirefoxDriver profil.
Exception in thread "main" org.openqa.selenium.WebDriverException:
java.net.BindException: Address already in use: connect
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1',
java.version: '1.6.0_18'
Driver info: driver.version: remote
at
org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:
341)
at
org.openqa.selenium.firefox.FirefoxDriver.execute(FirefoxDriver.java:
234)
at
org.openqa.selenium.remote.RemoteWebDriver.findElements(RemoteWebDriver.java:
173)
at
org.openqa.selenium.remote.RemoteWebDriver.findElementsByXPath(RemoteWebDriver.java:
231)
at org.openqa.selenium.By$6.findElements(By.java:200)
at
org.openqa.selenium.remote.RemoteWebDriver.findElements(RemoteWebDriver.java:
158)
Caused by: java.net.BindException: Address already in use: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at
org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:
123)
at
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:
133)
at
org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:
149)
at
org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:
108)
at
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:
415)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:
641)
at
org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:
211)
at
org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.execute(NewProfileExtensionConnection.java:
125)
at org.openqa.selenium.firefox.FirefoxDriver
$LazyCommandExecutor.execute(FirefoxDriver.java:341)
at
org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:
328)
... 11 more
Pouvez-vous poster un extrait de code de l'endroit où le problème est survenu?
double possible de WebDriver: executeScript() provoque BindException
double possible de WebDriver: executeScript() provoque BindException
OriginalL'auteur KJW | 2010-12-01
Vous devez vous connecter pour publier un commentaire.
Vous êtes à court de ports de sortie. Cela signifie que vous avez effectué des milliers de connexions sortantes dans un délai de deux minutes. Solution: utiliser un pool de connexion, ou de ralentir votre programme vers le bas.
((JavascriptExecutor)driver).executeScript(javascripthere)
est à l'origine de ce problème. Cependant, j'ai besoin d'exécuter Javascript sur les pages en cours d'essai.Que vous faites, mais vous n'avez pas besoin de tester une situation irréaliste. Pratique, les clients ne peuvent pas ouvrir des milliers de connexions sortantes. Vous êtes seul à le faire parce que vous voulez saturer le serveur. Donc la réponse est à utiliser plus de matériel de clients.
pas sûr de ce que vous menat par le pool de connexion. Comment puis-je fermer les connexions sortantes, une fois qu'ils sont finis ?
Ne connaissant rien au sujet de WebDriver je ne peux pas vraiment répondre à cette question, mais je voudrais être à la recherche d'un close() ou disconnect() méthode.
OriginalL'auteur user207421
J'ai eu ce problème en un ensemble de machines où certains ont couru Win2003, certains ont couru Windows7 et beaucoup couru Linux. Ce que j'ai trouvé était que la fermeture de tous les java processus et le redémarrage d'un peu aidé, en particulier après l'exécution de la java des processus pour plusieurs jours. Et, ce qui a contribué de manière très significative a été En évitant de Port TCP/IP à Épuisement sur MSDN avec MaxUserPort de 10000 (deux fois la valeur par défaut de 5000) et TcpTimedWaitDelay de 30 (minimum) sur le Win2003 de la machine qui était en cours d'exécution autonome de sélénium grille que le rôle hub. REDÉMARRAGE après changement - la selon les instructions sur le site MSDN.
Windows "netstat -b de la commande" a été très utile sur le Win2003 de la machine afin de confirmer que des dizaines et des dizaines de connexions tcp/ip ont été ouverts (ports 4444 et 5555); ceux qui ont été tout à fait évidemment partie de l'Selenium Grid (v2) du système.
En Java, j'utilise le pilote.quit(); à la fin de chaque méthode de test. J'ai essayé de pilote.close() et a perdu la capacité d'exécuter plus d'un test en ligne.
Je peux maintenant courir 250 tests avec 0 exceptions affiche sur le Moyeu de la console java.
OriginalL'auteur user424855
Si votre situation est comme la mienne, où vous
essayez d'ajouter
socket.setSoLinger(true, 0);
directement avant
socket.close();
.Comme suit:
Cette forces de l'OS pour libérer le socket, plutôt que de le mettre dans un
TIME_WAIT
état.OriginalL'auteur Chris S.