Lost UI Shared Context Error - Выполнение тестов транспортира в безголовом Chrome - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь выполнить тесты транспортира локально, используя chrome, но в режиме без головы, я видел документы и добавил соответствующие параметры в мой файл конфигурации:

capabilities: {
    browserName: 'chrome',
    shardTestFiles: true,
    chromeOptions: {
      args: [ '--headless', '--disable-gpu', '--window-size=800,600' ]
    }
  }

После запуска, Я сталкиваюсь со следующей ошибкой:

[1009/122000.081:ERROR:gpu_process_transport_factory.cc(1007)] Lost UI shared context.

Я попытался удалить флаг --disable-gpu, так как я прочитал, что это может не понадобиться в будущей версии Chrome.В настоящее время у меня установлена ​​последняя версия Chrome (69.0.3497.100), и я использую windows 7.

Что мне нужно сделать, чтобы тесты работали в автономном режиме?Мое намерение состоит в том, чтобы проверить, что я могу нормально работать в безголовом режиме локально, а затем я хочу, чтобы он также работал в безголовом режиме Chrome на Linux-узле Jenkins, где мы в настоящее время используем XVFB, но он оказывается слишком ненадежным с таймаутами в тестах дляпример.

Спасибо

РЕДАКТИРОВАТЬ

Что касается других, помечающих это как дубликат - я должен был сказать, что мои тесты не запускаются, когда япопытаться использовать функцию без монитора, без установленных параметров Chrome, Chrome запускается, как и ожидалось, и тест запускается и успешно проходит.

Мои тесты не выполняются без ошибок типа такого элемента, и если я просматриваю снимки экрана, сделанные насбои, я просто вижу белый квадрат на черном фоне (вероятно, в соответствии с параметром --window-size, который я устанавливал)

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Как вы упомянули, вы используете Chrome безголовый режим на Linux-узле Jenkins , вам нужно учитывать несколько факторов следующим образом:


- disable-gpu

Когда Headless Chrome был впервые выпущен как GA (Общая доступность) от Google Team статья Getting Started with Headless Chrome упомянул, что:

--disable-gpu \                # Temporarily needed if running on Windows.

Примечание было добавлено как:

Прямо сейчас, вы также захотите включить флаг --disable-gpu, если вы работаете наWindows.

В соответствии с обсуждением Headless: make --disable-gpu flag unnecessary было ясно, что:

Флаг --disable-gpuбольше не требуется на Linux или Mac OSX .Это также станет ненужным в Windows, как только ошибка SwiftShader fails an assert on Windows in headless mode будет исправлена.

Вы можете найти подробное обсуждение по Чтопроизошло под капотом в обсуждении ChromeDriver, показывающий потерянный общий контекст пользовательского интерфейса

Так что в качестве первого шага необходимо удалить аргумент: '--disable-gpu'


нестабильные тесты

Вы, похоже, выполняете свои тесты с аргументом --window-size=800,600, который подразумевает сокращение области просмотра .

.используйте максимально возможную область просмотра , вы должны инициализировать браузер Chrome в режиме развернутый через аргумент: 'start-maximized'


angular

С Угловой перспективы, вы можете избежать таймаутов , используя правильные expected_conditions.Вы можете найти подробное обсуждение различных ожидаемых условий в WebDriverWait не работает должным образом


- без головы

Наконец, я не уверен, что именно вы имели в виду подв ... мои тесты не запускаются, когда я пытаюсь использовать опцию без головы, без установленных опций chrome ... .Возможно, аргумент '- без головы' может быть вызван только через chromeOptions и никакой другой альтернативы.

0 голосов
/ 11 октября 2018

У меня та же ошибка во время работы [1010 / 161441.019: ОШИБКА: gpu_process_transport_factory.cc (1007)] Утрачен общий контекст пользовательского интерфейса.

, но мой тест проходит отлично. Я уже говорил, что это https://gist.github.com/cvuorinen/543c6f72f8ec917ebfd596802d387aa3

Надеюсь, что это ниже может помочь вам

https://cvuorinen.net/2017/05/running-angular-tests-in-headless-chrome/

https://developers.google.com/web/updates/2017/04/headless-chrome

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...