【问题标题】:What does "Client failed to connect to the D-BUS daemon" mean?“客户端无法连接到 D-BUS 守护程序”是什么意思?
【发布时间】:2018-06-04 19:36:26
【问题描述】:

我正在使用非常复杂的设置来测试各种非公开网页。我使用jenkinsdockerimage 中运行python-selenium 测试。这样,我就完全独立于 jenkins 环境,可以创建自己的环境。在这种环境下,我安装了以下软件:

  • Ubuntu 16.04.3
  • Firefox:Mozilla Firefox 57.0.1
  • geckodriver:0.18.0
  • 鼻子测试:1.3.7
  • 硒:3.8.0

运行测试时,大部分都成功了,我在geckodriver.log 输出消息中看到

(firefox:55): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
/usr/bin/dbus-launch terminated abnormally without any error message

我的问题:

  • 这条消息是什么意思?
  • 这是否表明有时测试失败的原因?
  • 如果是,如何解决?

【问题讨论】:

  • 但是,应用程序无法访问系统菜单中的工具。执行权限不授予对系统组件的访问权限(您的一个或多个子流程是无主的,)。
  • 我不太确定我是否理解。什么“工具”,什么“系统菜单”?这只是偶尔发生吗?正常吗?
  • 这似乎是操作系统问题。 Dbus 是一个进程间通信库。你用的是什么linux操作系统?
  • 它的 Ubuntu 16.04.3。
  • 在这里您可以找到避免此类警告的提示askubuntu.com/questions/237893/…

标签: python selenium jenkins


【解决方案1】:

您看到的错误是:

(firefox:55): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
/usr/bin/dbus-launch terminated abnormally without any error message

因此,很明显 Firefox 尝试连接到 D-BUS 守护进程,但由于 dbus-launch 异常终止而失败。


dbus 启动

dbus-launch 基本上是通过 Firefox 通过 shell 脚本启动消息总线的实用程序。它通常会从用户的登录脚本中调用。 dbus-launch 启动会话总线实例并将该实例的地址和pid 打印到标准输出。

您可以从Linux man page

了解有关 dbus-launch 的更多信息

根本原因

如果您使用 su (root)、sudosueditgksu,可能会出现此错误。主要原因是DBUS_SESSION_BUS_ADDRESS在你su时保留了它的值,而不是在/root/.dbus/session-bus中取值。

在这里你会找到关于GConf Error: No D-BUS daemon running?! How to reinstall or fix?的详细讨论。

另一个可能的原因可能是基础 Firefox 浏览器版本可能是旧版本,已对其进行更新以达到当前版本。


解决办法:

有几个解决方案可用于解决此 相关问题,如下所示:

  • 在启动 Firefox 之前,您必须输入 export $(dbus-launch)
  • 但是,这可能会导致NSS_USE_SHARED_DB 出现另一个错误。所以你也必须使用export NSS_USE_SHARED_DB=ENABLED
  • 最方便的方法是将所有配置放在.bashrc 文件中:

    export $(dbus-launch)
    export NSS_USE_SHARED_DB=ENABLED
    firefox &
    

这个discussion 详细讲述了解决方案。

  • 如果您的系统上没有安装dbus-launch,您必须安装包含dbus-launch程序的dbus-x11 包。
  • 一个有效的解决方案是卸载旧版 Firefox 浏览器并安装最近发布的 GA 版本 Firefox 浏览器。

最佳方法

UbuntuMozila 都正确解决了 dbus-launch 的问题。要克服此错误,您需要执行以下步骤:

  • 让您的 Ubuntu 更新为 Latest Patch Releases 和更新。
  • 始终使用Selenium-Python clientWebDriver 变体的最新发布版本,例如GeckoDriver 和 Web 浏览器,例如火狐浏览器
  • 在执行测试套件之前和之后,清理构建项目工作区 em>。
  • 在执行测试之前和之后清除浏览器缓存
  • 如果您必须卸载任何Web Client变体(例如Mozilla Firefox),您可以使用Revo Uninstallar em> 与 Moderate Memory Scan,以便丢弃过时的注册表设置
  • 定期使用 CCleaner 工具清除操作系统杂务,包括陈旧的rust_mozprofile directories

【讨论】:

    【解决方案2】:

    这条消息是什么意思?

    DBus 是用于进程间交换的消息总线系统。在类似的主题上存在一个未解决的geckodriver 问题:

    这是否表明有时测试失败的原因?

    警告不应真正影响测试,但如果不了解测试中实际发生的情况,就很难推测间歇性测试失败。

    如果是,如何解决?

    这里有一些事情可以尝试:

    【讨论】:

      【解决方案3】:

      对我来说,解决方案是安装 dbus-x11

      apt install dbus-x11
      

      【讨论】:

        猜你喜欢
        • 2021-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        • 2018-12-09
        • 1970-01-01
        • 2021-02-26
        相关资源
        最近更新 更多