【问题标题】:Error communicating with the remote browser. It may have died. Selenium Web driver与远程浏览器通信时出错。它可能已经死了。 Selenium 网络驱动程序
【发布时间】:2014-04-11 22:09:33
【问题描述】:

这是我的错误日志:

Apr 12, 2014 3:27:46 AM org.apache.http.impl.client.DefaultRequestDirector tryConnect
INFO: I/O exception (java.net.SocketException) caught when connecting to the target host: Permission denied: connect
Apr 12, 2014 3:27:46 AM org.apache.http.impl.client.DefaultRequestDirector tryConnect
INFO: Retrying connect
Apr 12, 2014 3:27:46 AM org.apache.http.impl.client.DefaultRequestDirector tryConnect
INFO: I/O exception (java.net.SocketException) caught when connecting to the target host: Permission denied: connect
Apr 12, 2014 3:27:46 AM org.apache.http.impl.client.DefaultRequestDirector tryConnect
INFO: Retrying connect
Apr 12, 2014 3:27:46 AM org.apache.http.impl.client.DefaultRequestDirector tryConnect
INFO: I/O exception (java.net.SocketException) caught when connecting to the target host: Permission denied: connect
Apr 12, 2014 3:27:46 AM org.apache.http.impl.client.DefaultRequestDirector tryConnect
INFO: Retrying connect
org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Build info: version: '2.41.0', revision: '3192d8a', time: '2014-03-27 17:18:15'
System info: host: 'prgi-PC', ip: '192.168.1.9', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_51'
Driver info: driver.version: RemoteWebDriver
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:589)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
    at org.openqa.selenium.remote.RemoteWebElement.findElements(RemoteWebElement.java:187)
    at org.openqa.selenium.remote.RemoteWebElement.findElementsByTagName(RemoteWebElement.java:264)
    at org.openqa.selenium.By$ByTagName.findElements(By.java:323)
    at org.openqa.selenium.remote.RemoteWebElement.findElements(RemoteWebElement.java:163)
    at com.sai.kiran.Test.main(Test.java:155)
Caused by: java.net.SocketException: Permission denied: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:83)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:117)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:178)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:131)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
    at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
    at org.openqa.selenium.remote.HttpCommandExecutor.fallBackExecute(HttpCommandExecutor.java:322)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:301)
    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.execute(NewProfileExtensionConnection.java:165)
    at org.openqa.selenium.firefox.FirefoxDriver$LazyCommandExecutor.execute(FirefoxDriver.java:362)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:568)
    ... 6 more

代码:

FirefoxProfile profile = new FirefoxProfile();

String path="C:\\Users\\prgi\\Downloads\\listShack";
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", path);

profile.setPreference("browser.download.manager.alertOnEXEOpen", false);

profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/msword,application/csv,text/csv,image/png ,image/jpeg");

profile.setPreference("browser.download.manager.showWhenStarting",
false);

profile.setPreference("browser.download.manager.focusWhenStarting",
false);
//profile.setPreference("browser.download.useDownloadDir",true);
profile.setPreference("browser.helperApps.alwaysAsk.force",
false);

profile.setPreference("browser.download.manager.alertOnEXEOpen", false);

profile.setPreference("browser.download.manager.closeWhenDone", false);

profile.setPreference("browser.download.manager.showAlertOnComplete", false);
profile.setPreference("browser.download.manager.useWindow",
false);

profile.setPreference("browser.download.manager.showWhenStarting",false);

profile.setPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting",
false);

profile.setPreference("pdfjs.disabled", true);

WebDriver driver = new FirefoxDriver(profile);

从这里我管理我的元素..

注意:它 24/7 连续工作了两天,今天我经常收到此错误。

【问题讨论】:

  • 我们所拥有的只是这里的堆栈跟踪。请提供更多信息以增加您获得答案的机会。什么代码(一小部分)重现了这个问题?系统在工作和失败之间发生了哪些变化?您是否尝试过在新系统上运行它?它在那里失败了吗?
  • 另外,鉴于您收到了权限被拒绝错误,您是否检查过您的防火墙是否阻止了 selenium?
  • 我在同一个系统上工作,我不认为我的防火墙阻止了 selenium。你想让我展示我写的代码@Vish
  • 请仔细检查您的防火墙确实不是问题所在。随机故障通常指向这种东西。是的,需要代码 - 但不要过度,只需粘贴所需的代码。
  • 该异常本身可能是任何事情:从驱动程序兼容性问题到网络问题。所以堆栈跟踪在这种情况下没有帮助。如果您使用 RemoteWebDriver 从机器 A 到机器 B 远程运行测试,请尝试在机器 B 上本地运行它们。如果您没有远程运行测试,请尝试查看如果您使用 WebDriver 而不是远程驱动程序(不是硬开关)。将帮助您消除网络问题和驱动程序问题

标签: firefox selenium selenium-webdriver


【解决方案1】:

问题

我在 Windows 7 中本地运行 InternetExplorerDriver 时遇到了同样的问题 - (IEDriverServer_Win32_2.42.0.zip)

org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.

当我在TaskManager下查看正在运行的进程时,有多个IEDriverServer.exe进程在运行,没有被正确清理。

解决方案

运行以下命令,杀死所有正在运行的IEDriverServer.exe 进程,并解决了这个问题(对我来说)。

taskkill /F /IM IEDriverServer.exe

【讨论】:

  • 你知道火狐版本是什么吗?
  • @Fallenreaper ...呃...对于我的场景,我有同样的例外,但使用 InternetExplorer 而不是 Firefox...所以没有 Firefox,只有 InternetExplorer。
  • 我在 ubuntu 上运行 firefox / chrome 时遇到了同样的错误。如何在 ubuntu 上解决这个问题?
  • @NisrineBouGhannam - 如果你想杀死 Ubuntu 中的进程,互联网上有很多信息 - 例如。 askubuntu.com/questions/104903/…
【解决方案2】:

对我来说,使用以 1 开头的端口,而不是接近默认端口值 5555 的端口,导致我出现此错误。将节点端口从 1234 更改回 5558 已解决该问题。不确定端口如何工作,但似乎 1234 不稳定

【讨论】:

    【解决方案3】:

    我按照以下步骤解决了问题:

    1. 获取 Firefox 配置文件名称

      • 在运行窗口 firefox.exe -P 上试试这个命令 firefox.exe -P firefox.exe -profilemanager

    上述命令之一将打开弹出窗口,说明默认配置文件的名称,通常为“默认”

    1. 使用下面提到的代码获取firefox驱动程序

      ProfilesIni allProfiles = new ProfilesIni();
      FirefoxProfile myProfile = allProfiles.getProfile("default");
      myProfile.setAcceptUntrustedCertificates(true);
      myProfile.setAssumeUntrustedCertificateIssuer(true);
      driver = new FirefoxDriver(myProfile);
      

    【讨论】:

      【解决方案4】:

      请尝试用以下命令替换exe路径

      File file = new File("IE DriverServer.exe path");
      System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-07
        • 2016-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-25
        相关资源
        最近更新 更多