【发布时间】:2010-12-02 00:10:24
【问题描述】:
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> 标记在中断标记之前和之后包装文本节点。然后,WebDriver 可以通过使用/ddb 作为 xpath 语法来获取文本。
一切看似顺利,但在整整 3 分钟后崩溃并出现 BindException 错误。似乎我上一个问题中的 Javascript 导致了太多的出站连接。
我需要一个解决方案来允许 Javascript 持续编辑 WebDriver 中的 DOM,以便 FirefoxDriver 可以选择文本节点。
【问题讨论】:
-
这仍然是 1.0b 版本的问题吗?看起来是这样。我得到这个地址已经被大量使用了。我在我公司控制的远程机器上运行它,我没有能力增加可用端口。即使我这样做了,这似乎也是一个不应通过增加 webdriver 可以使用的端口数来掩盖的问题。
-
不确定,但似乎是 Windows 问题。
标签: java javascript webdriver