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

Ale*_*lex 12 python selenium jenkins

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

  • Ubuntu 16.04.3
  • Firefox:Mozilla Firefox 57.0.1
  • geckodriver:0.18.0
  • nosetests: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
Run Code Online (Sandbox Code Playgroud)

我的问题:

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

Deb*_*anB 6

您看到的错误是:

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

所以很显然Firefox试图连接到d-BUS守护进程,并failsdbus-launch被异常终止。

dbus发射

dbus-launch基本上是通过Shell脚本启动消息总线firefox工具。通常会从用户的登录脚本中调用它。dbus-launch会启动一个会话总线实例以及打印addresspid该实例的标准输出。

您可以dbus-launchLinux man page

错误的根本原因

如果使用su(root)sudosueditgksu,则可能会出现此错误。主要原因是DBUS_SESSION_BUS_ADDRESS retains its value when yousuinstead 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。因此,您还必须使用export NSS_USE_SHARED_DB = ENABLED
  • 最方便的方法是将所有配置都放在.bashrc文件中:

    export $(dbus-launch)
    export NSS_USE_SHARED_DB=ENABLED
    firefox &
    
    Run Code Online (Sandbox Code Playgroud)

discussion将详细讨论该解决方案。

  • 如果dbus-launch您的系统上未安装,则必须安装包含dbus-launch程序的dbus-x11软件包。
  • 一个有效的解决方案是Firefox通过Revo Uninstallar卸载旧版基本版本的Browser,然后安装最新发布的GAFirefoxBrowser。

最佳方法

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

  • 通过最新的补丁版本和保持更新。Ubuntu OSUpdates
  • 总是使用最新发布的版本Selenium-Python的客户端WebDriver variantGeckoDriver)和Web BrowserFirefox Browser
  • Clean and Build执行工作IDE之前和之后的项目工作区会重新开始Test Suite
  • Clear执行之前和之后的浏览器缓存Tests
  • 如果必须使用uninstall任何Web Client变体(Mozilla Firefox),请使用带有中等内存扫描功能的Revo Uninstallar,以便废弃陈旧的注册表设置
  • CCleaner定期使用工具抹去OS琐事,包括陈旧的东西rust_mozprofile directories