WebDriver: executeScript () вызывает исключение BindException - PullRequest
4 голосов
/ 02 декабря 2010

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 может получить текст, используя /ddb в качестве синтаксиса xpath.

Кажется, что все идет гладко, но вылетает с ошибкой BindException ровно через 3 минуты. Кажется, что Javascript в моем предыдущем вопросе вызывает слишком много исходящих соединений.

Мне нужно решение, позволяющее Javascript постоянно редактировать DOM в WebDriver, чтобы текстовые узлы можно было выбирать с помощью FirefoxDriver.

1 Ответ

1 голос
/ 09 декабря 2010

Эта проблема, похоже, была устранена последними изменениями (28 октября 2010 г.). Это была проблема с чрезмерным исчерпанием количества эфемерных портов, когда клиент общался с сервером selenium или даже клиент общался с Firefox локально или удаленно. Вам следует обновить вашу платформу (на стороне клиента и сервера, если применимо) до новейшей версии (альфа-7). Если у вас нет возможности для обновления, вы можете просто увеличить количество временных портов локально. Для Windows исправление здесь , в противном случае сделайте поиск в Google.

Выпуск: http://code.google.com/p/selenium/issues/detail?id=923

Исправлено: http://code.google.com/p/selenium/source/detail?r=10082

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...