Chrome возвращает код состояния 400 в docker контейнере - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть тесты на транспортировку селена в контейнере docker. Я должен проверить небезопасный веб-сайт. Для одной из функций, где выполняется вызов API для получения некоторых данных из резервной копии, chrome возвращает код состояния 400. Я добавил следующее в свой конфигурационный файл транспортира:

chrome args ("--headless", "--no-sandbox", "--disable-dev-shm-usage")

directConnection: true,
disableChecks: true

Возможности:

acceptInsecureCerts: true
acceptSslCerts: true

Я также добавил в свой файл .env следующее:

NODE_TLS_REJECT_UNAUTHORIZED=0

Ниже приведены сетевые журналы, которые я получил:

{
  method: 'Network.responseReceived',
  params: {
    frameId: '721A00F872D1255AA1DAE58D2DF5D75E',
    loaderId: '70EAE0F82B0AB6BDE6489BC26D77DA34',
    requestId: '117.239',
    response: {
      connectionId: 309,
      connectionReused: true,
      encodedDataLength: 123,
      fromDiskCache: false,
      fromPrefetchCache: false,
      fromServiceWorker: false,
      headers: [Object],
      mimeType: 'application/problem+json',
      protocol: 'h2',
      remoteIPAddress: 'remote ip',
      remotePort: 443,
      securityDetails: [Object],
      securityState: 'insecure',
      status: 400,
      statusText: '',
      timing: [Object],
      url: 'https://api call link'
    },
    timestamp: 15184.562748,
    type: 'XHR'
  }
}
{
  method: 'Network.dataReceived',
  params: {
    dataLength: 185,
    encodedDataLength: 0,
    requestId: '117.239',
    timestamp: 15184.562954
  }
}
{
  method: 'Network.dataReceived',
  params: {
    dataLength: 0,
    encodedDataLength: 203,
    requestId: '117.239',
    timestamp: 15184.563471
  }
}
{
  method: 'Network.loadingFinished',
  params: {
    encodedDataLength: 326,
    requestId: '117.239',
    shouldReportCorbBlocking: false,
    timestamp: 15184.552973
  }
}

Следует отметить, что при локальном запуске вне контейнера docker эта функция работает как положено, и вызов API возвращается с кодом состояния: 200

PS Запуск его в Zelenium имеет то же самое результаты локально отображаются в docker.

EDIT: журналы консоли содержат следующую ошибку:

Failed to load resource: the server responded with a status of 400 ()

1 Ответ

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

статус: 400

статус: 400 подразумевает 400 неправильный запрос и HTTP 400 Bad Request Код состояния ответа указывает, что сервер не может или не будет обрабатывать запрос из-за чего-то, что воспринимается как ошибка клиента, например, неправильно сформированный синтаксис запроса, неверное формирование кадра запроса или обманчивая маршрутизация запроса.


Некоторые информационные промежутки времени ваших испытаний кода, соответствующий HTML и полная трассировка стека ошибок помогли бы нам лучше проанализировать проблему. Однако, согласно обсуждению в Не удалось загрузить ресурс: сервер ответил со статусом 400 () , похоже, HTML DOM веб-страницы содержит элементы AJAX и JavaScript.

Поэтому, пока вы вызываете метод get(), прежде чем взаимодействовать с любым из элементов на определенной веб-странице, вам нужно вызвать WebDriverWait для требуемых элементов, которые можно нажимать , что обеспечит:

  • связанных JavaScript и AJAX Вызовы завершили рендеринг DOM Tree .
  • Требуемые элементы включены и видимы для распознавания click события, распространяемые через Selenium .

Ссылки

Вы можете найти пару соответствующих обсуждений в:


tl; dr

Не удалось загрузить ресурс: сервер ответил со статусом 429 (слишком много запросов) и 404 (не найдено) с ChromeDriver Chrome через Selenium

...