Firefox сбой без головы на машине без головы linux - PullRequest
2 голосов
/ 20 января 2020

Я пытаюсь запустить тесты на селен на машине без головы redhat linux, используя firefox без головы. Мой метод создания драйвера выглядит так:

private static WebDriver createFireFoxDriver() {
    WebDriverManager.firefoxdriver()
            .setup();

    FirefoxOptions options = new FirefoxOptions();
    options.setHeadless(true);
    options.addPreference("browser.download.folderList", 2);
    options.addPreference("browser.download.dir", ABSOLUTE_PATH_TO_FOLDER);
    options.addPreference("browser.download.manager.showWhenStarting", false);
    options.addPreference("browser.helperApps.neverAsk.saveToDisk", "application/json");

    return new FirefoxDriver(options);
}

Ошибка, которую я вижу в файлах журнала, выглядит следующим образом:

[Parent 65433, Gecko_IOThread] WARNING: pipe error (82): Connection reset by peer: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 358
[Parent 65433, Gecko_IOThread] WARNING: pipe error: Broken pipe: file /builds/worker/workspace/build/src/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 727

###!!! [Parent][MessageChannel] Error: (msgtype=0x1E0074,name=PBrowser::Msg_StopIMEStateManagement) Channel error: cannot send/recv


###!!! [Parent][MessageChannel] Error: (msgtype=0x1E008F,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv

1579539977190   Marionette  TRACE   [11] Frame script loaded
1579539977191   Marionette  TRACE   [11] Frame script registered
A content process crashed and MOZ_CRASHREPORTER_SHUTDOWN is set, shutting down

Я проверил, что у нас есть правильные версии gtk, glib, pan go, xorg и libstdc ++, также установленные на машине. Кто-нибудь сталкивался с этой проблемой раньше на машине без сборки?

Firefox версия: 68.4.1 | Версия Selenium: 3.141.59 | Версия Geckdriver: 0.26.0

Копание глубже в тесте, который вызывает крэ sh. Прямо перед тем, как произойдет cra sh, тест нажимает на функциональность попытки SwaggerUI API. Никакие другие действия на сайте не приводят к выполнению этого крэ sh.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Нашел решение, которое работает так же, как причина root.

При запуске firefox в контейнере linux docker, /dev/shm/ должно иметь не менее 2 ГБ. Моя конфигурация сборочной машины не соответствовала этому требованию. Увеличение объема памяти до значения более 2 ГБ решило мою проблему немедленно.

0 голосов
/ 21 января 2020

Я не вижу ошибок в версиях, которые вы используете в отношении обсуждения в Какие Firefox версии браузера поддерживаются для данной версии Geckodriver? .

Единственный подозрительным является метод setHeadless() класса FirefoxOptions , который согласно документации выглядит следующим образом:

setHeadless(boolean headless)

Так эффективно ваш код блок будет:

FirefoxOptions options = new FirefoxOptions();
options.setHeadless(true)

Обновление

Дополнительно Ключи :

  • browser.download.folderList
  • browser.download.dir
  • browser.download.manager.showWhenStarting
  • browser.helperApps.neverAsk.saveToDisk

необходимо настроить с помощью метода setPreference() с использованием экземпляра FirefoxProfile() следующим образом:

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", ABSOLUTE_PATH_TO_FOLDER);
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/json");

Соответствующее подробное обсуждение можно найти в Как автоматически загружать через Firefox браузер, используя FirefoxProfile?

...