Java WebDriver:executeScript()导致BindException

Java WebDriver:executeScript()导致BindException,java,javascript,webdriver,Java,Javascript,Webdriver,javascripthere是在 在通过WebDriver加载的每个页面上运行((JavascriptExecutor)driver).executeScript(javascripthere)时 测试运行3分钟后,我发现以下错误: Exception in thread "main" org.openqa.selenium.WebDriverException: java.net.BindException: Address already in use: connect System inf

javascripthere
是在

在通过WebDriver加载的每个页面上运行
((JavascriptExecutor)driver).executeScript(javascripthere)

测试运行3分钟后,我发现以下错误:

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 
基本上,这是为了捕获不能由
text()
xpath语法选择的文本节点。Javascript使用
标记包装break标记前后的文本节点。然后,WebDriver可以使用
/ddb
作为xpath语法来获取文本

事情似乎运行得很顺利,但恰好在3分钟后由于BindException错误而崩溃。我上一个问题中的Javascript似乎导致了太多的出站连接


我需要一个解决方案,允许Javascript在WebDriver中不断编辑DOM,以便FirefoxDriver可以选择文本节点。

最近的更改似乎已经解决了这个问题(2010年10月28日)。客户机与selenium服务器交谈,甚至客户机与Firefox交谈(本地或远程),都会过度消耗临时端口的数量,这是一个问题。您应该将框架(客户端和服务器端,如果适用)更新为(alpha-7)。如果您无法升级,只需在本地增加临时端口的数量即可。对于Windows,修复方法是,否则,进行一些谷歌搜索

问题:


修复:

这个问题仍然出现在alpha 7版本中。好吧,看起来它是通过在谷歌代码上浏览而发布的,但我想情况并非如此。您是否尝试增加本地临时端口的数量?这应该是一个权宜之计,直到他们实现保持连接。是的,我想这是唯一的办法。人们提到的另一个可能的解决方案是在linux环境下运行测试。它仍然会导致一大堆TCIP端口被打开,但linux的容忍度更高。1.0b版本仍然存在问题吗?看来是这样。我知道这个地址已经被大量使用了。我在我的公司控制的远程机器上运行这个,我没有能力增加可用端口。即使我这样做了,这似乎是一个不应该通过增加webdriver可以使用的端口数来掩盖的问题。不确定,但这似乎是一个windows问题。