什么"客户端无法连接到D-BUS守护进程"意思?

时间:2017-12-22 06:03:35

标签: python selenium jenkins

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

  • Ubuntu 16.04.3
  • Firefox:Mozilla Firefox 57.0.1
  • geckodriver:0.18.0
  • nosetests:1.3.7
  • selenium: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

我的问题:

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

3 个答案:

答案 0 :(得分:5)

您看到的错误是:

(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守护程序fails,因为dbus-launch异常终止。

DBUS推出

dbus-launch 基本上是{strong>实用程序,可以通过shell脚本 firefox启动消息总线。通常会从用户的登录脚本中调用它。 dbus-launch 启动会话总线实例,并将该实例的addresspid打印到标准输出。

您可以从Linux man page

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

错误的根本原因

如果您使用 su(root) sudo suedit gksu ,则会出现此错误。主要原因是 DBUS_SESSION_BUS_ADDRESS retains its value when you su instead of picking up the value in /root/.dbus/session-bus/

您会在GConf-WARNING **: Client failed to connect to the D-BUS daemon: here找到详细讨论。

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

解决方案:

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

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

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

discussion详细说明了解决方案。

  • 如果您的系统上未安装dbus-launch,则必须安装包含 dbus-launch 程序的 dbus-x11 软件包。
  • 有效的解决方案是通过 Revo Uninstallar 卸载Firefox浏览器的旧基础版本,并安装最近发布的{strong> GA 版本的{{1} }浏览器。

最佳方法

Ubuntu Mozila 正确解决了 dbus-launch 的问题。要克服此错误,您需要按照以下步骤操作:

  • 使用Latest Patch ReleasesFirefox更新 Ubuntu OS
  • 始终使用最新发布的Selenium-Python client版本, Updates GeckoDriver)和 WebDriver variant (<强> Web Browser
  • Firefox Browser 项目工作区在执行Clean and Build之前和之后重新通过IDE
  • 在执行Test Suite之前和之后
  • Clear 浏览器缓存
  • 如果您必须Tests任何uninstall个变体( Web Client ),请使用 Revo Uninstallar 中等内存扫描,以便废弃陈旧的注册表设置
  • 定期使用Mozilla Firefox工具清除操作系统杂项,包括陈旧的rust_mozprofile directories

答案 1 :(得分:1)

  

这条消息是什么意思?

DBus是用于进程间换向的消息总线系统。如果不是同一主题,则存在一个开放的geckodriver问题:

  

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

警告不应该真正影响测试,但如果没有看到测试中实际发生的情况,很难推测间歇性测试失败。

  

如果是,如何解决?

以下是一些尝试:

答案 2 :(得分:0)

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

apt install dbus-x11