WebDriver : executeScript()가 BindException을 발생시킵니다.
javascripthere
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는 xpath 구문으로 /ddb
를 사용하여 텍스트를 가져올 수 있습니다.
겉보기에는 부드럽게 작동하지만 정확히 3 분 후에 BindException 오류로 인해 충돌합니다. 이전 질문에서 Javascript가 너무 많은 아웃 바운드 연결을 일으키는 것으로 보입니다.
Javascript가 WebDriver에서 DOM을 지속적으로 편집하여 FirefoxDriver에서 텍스트 노드를 선택할 수 있도록하는 솔루션이 필요합니다.
이 여전히 1.0B 릴리스에 문제가 있습니까? 그렇게 보입니다. 이 주소는 이미 꽤 많이 사용 중입니다. 회사에서 관리하는 원격 시스템에서이 작업을 실행하고 있으며 사용 가능한 포트를 늘릴 수있는 능력이 없습니다. 비록 내가 그랬더라도 이것은 웹 드라이어가 사용할 수있는 포트의 수를 늘려서는 안되는 문제입니다. – Aaron
확실하지 않지만 Windows 문제인 것처럼 보입니다. – KJW