Что означает "Клиент не смог подключиться к демону D-BUS"?

Я использую очень сложную настройку для тестирования различных непубличных веб-страниц. Я использую jenkins для запуска тестов python-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

Мои вопросы:

  • Что означает это сообщение?
  • Может ли это быть причиной того, почему иногда тесты терпят неудачу?
  • Если да, то как это исправить?

Ответ 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-демонам и fails, поскольку dbus-launch завершается ненормально.

DBus-запуск

dbus-launch - это в основном утилита для запуска шины сообщений с помощью Firefox через оболочку script. Обычно он вызывается из сценариев входа пользователя. dbus-запуск запускает экземпляр шины сеанса и выводит address и pid этого экземпляра на стандартный вывод.

Подробнее о dbus-launch вы можете узнать из Linux man page

Коренная причина ошибки

Эта ошибка может возникнуть, если вы используете 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-x11, содержащий программу dbus-launch.
  • Эффективным решением было бы удалить старую базовую версию Firefox Browser через Revo Uninstallar и установить последнюю версию GA версии Firefox Browser.

Лучший подход

Проблема с dbus-запуском была исправлена ​​как с помощью Ubuntu, так и Mozila. Чтобы преодолеть эту ошибку, вам необходимо выполнить следующие шаги:

  • Сохраните Ubuntu OS с Последние обновления исправлений и Updates.
  • Всегда используйте последнюю версию Selenium-Python клиент, WebDriver variant ( GeckoDriver) и Web Browser (Firefox Browser)
  • Clean and Build Рабочая область проекта заново через IDE до и после выполнения вашего Test Suite.
  • Clear Браузерный кэш до и после выполнения вашего Tests.
  • Если у вас есть uninstall в любом из вариантов Web Client (Mozilla Firefox), используйте Revo Uninstallar с Умеренная сканирование памяти так что устаревшие параметры реестра отбрасываются.
  • Регулярно используйте инструмент CCleaner, чтобы стереть Операции ОС, включая устаревший rust_mozprofile directories.

Ответ 2

Что означает это сообщение?

DBus - это система сообщений для межпроцессной коммутации. Существует открытый вопрос geckodriver для аналогичного, если не одного и того же предмета:

Может ли это быть причиной того, почему иногда тесты терпят неудачу?

Предупреждение не должно влиять на тесты, но вам сложно размышлять о ваших прерывистых тестах, не видя, что на самом деле происходит в ваших тестах.

Если да, то как это исправить?

Вот несколько примеров: