4

javascripthereスクリプトはJavascript にあります: ブレークタグに続く/先行するテキストノードを取得し、それらを ddb タグでラップする方法は?

((JavascriptExecutor)driver).executeScript(javascripthere)WebDriver 経由でロードされた各ページで実行中に、

テストを 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 は/ddbas xpath 構文を使用してテキストを取得できます。

スムーズに動作しているように見えますが、正確に 3 分後に BindException エラーでクラッシュします。前の質問の Javascript があまりにも多くのアウトバウンド接続を引き起こしているようです。

FirefoxDriver でテキスト ノードを選択できるように、Javascript が WebDriver で DOM を継続的に編集できるようにするソリューションが必要です。

4

1 に答える 1

1

これは、最近の変更 (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

于 2010-12-09T18:04:03.083 に答える