最近,特别是在同一台PC上运行多个任务和进程时,selenium webdriver 2提供了许多无法访问的浏览器异常,这些异常总是带有java套接字异常:
Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '2.25.0', revision: '17482', time: '2012-07-18 21:09:54'
System info: os.name: 'Windows Vista', os.arch: 'x86', os.version: '6.0', java.version: '1.7.0_05'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:493)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:182)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:110)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:185)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:178)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:174)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:92)
Caused by: java.net.SocketException: Permission denied: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(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:148)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:150)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:575)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.openqa.selenium.remote.HttpCommandExecutor.fallBackExecute(HttpCommandExecutor.java:319)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:297)
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.execute(NewProfileExtensionConnection.java:136)
at org.openqa.selenium.firefox.FirefoxDriver$LazyCommandExecutor.execute(FirefoxDriver.java:357)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:472)
... 7 more
为什么这种情况经常发生? selenim 2.25与firefox 14不兼容吗?
答案 0 :(得分:3)
我发现自己几个月来一直在努力解决这个问题,我真的尝试了几乎所有的东西,但仍然有随机的“UnreachableBrowserException”错误。
这是我唯一可行的解决方案。
System.setProperty("java.net.preferIPv4Stack" , "true");
答案 1 :(得分:1)
我也遇到了与Selenium Web Driver相同的问题。特别是当我在不重新启动Web驱动程序的情况下运行长测试脚本时。 然后我搬到了一台具有很高性能的新机器上,然后我可以避免它接近90%。
我认为这是因为内存不足而导致我在新机器中将RAM升级到4GB。
这解决了我的问题,现在一切正常。
注意: 请检查每次测试运行后是否正确关闭驱动程序。由于内存泄漏,也可能导致驱动程序死机。
答案 2 :(得分:0)
这是因为2个原因
会话未被杀死,尝试终止会话并再次运行测试。
selenium web驱动程序无法找到FF浏览器启动它。
同时检查所有客户端驱动程序,并将selenium-server.jar放在库中。
您可以在启动FF时粘贴配置代码吗?
答案 3 :(得分:0)
我曾多次面对这个问题。可能有各种原因。
您的浏览器实例未正确关闭。因此,当您调用driver.close()方法时,从任务管理器检出是否正在查杀驱动程序。我观察它主要是chrome和IE。对于Firefox,它将自动关闭实例。
FF和Webdriver版本应该相互兼容。更改您的Webdriver jar并尝试它。
您的项目中可能存在不需要的jar。 Xalan.jar曾经给我带来过一次问题。删除它,看看。