javascripthere
是在Javascript: how to get text nodes following/preceding break tags and wrap them with ddb tag?
在通过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使用<ddb>
标记在break标记之前和之后包装文本节点。然后,WebDriver可以使用/ddb
作为xpath语法来获取文本。
事情似乎运行顺利但在3分钟后崩溃并出现BindException错误。似乎我上一个问题中的Javascript导致了太多的出站连接。
我需要一个解决方案,允许Javascript在WebDriver中不断编辑DOM,以便FirefoxDriver可以选择文本节点。
答案 0 :(得分:1)
这是一个似乎已被最近的变化(2010年10月28日)清除的问题。这是一个问题,即客户与selenium服务器交谈,甚至客户端与本地或远程的Firefox通信,都会耗尽短暂的端口数量。您应该将框架(客户端和服务器端,如果适用)更新为newest release(alpha-7)。如果您无法升级,可以在本地增加临时端口的数量。对于Windows,修复程序为here,否则,请进行一些Google搜索。