WebDriver:executeScript()导致BindException

javascripthere是在Javascript上找到的脚本:如何获取文本节点后面/前面的break标记并用ddb标记包装它们?

在通过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,修复程序在这里 ,否则,做一些谷歌搜索。

问题: http : //code.google.com/p/selenium/issues/detail?id = 923

修复: http : //code.google.com/p/selenium/source/detail? r = 10082