当前位置: 首页 > 知识库问答 >
问题:

Chrome在docker容器中返回状态代码400

叶修永
2023-03-14

我在docker容器中运行了量角器硒测试。我必须测试一个不安全的网站。对于其中一个函数,API调用从支持的chrome返回一些数据,返回状态代码400。我在量角器配置文件中添加了以下内容:

chrome参数(“--headless”,“--no sandbox”,“--disable dev shm usage”)

directConnection: true,
disableChecks: true

能力:

acceptInsecureCerts: true
acceptSslCerts: true

我还添加了以下内容。环境文件:

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

P、 在Zelenium中运行它的结果与docker中的本地结果相同。

编辑:控制台日志包含以下错误:

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

共有1个答案

赫连瀚
2023-03-14

状态:400表示400个错误请求,HTTP 400个错误请求响应状态代码表示服务器无法或不会处理该请求,因为某些被认为是客户端错误,例如错误的请求语法、无效的请求消息帧或欺骗性的请求路由。

您的代码测试、相关HTML和完整的错误堆栈跟踪等信息本可以帮助我们更好地分析问题。然而,根据“未能加载资源:服务器以400()的状态响应”中的讨论,网页的HTML DOM似乎包含支持AJAX和JavaScript的元素。

因此,当您调用get()方法时,在与特定网页上的任何元素交互之前,您需要引导WebDriverWait以使所需元素可单击,这将确保:

  • 相关的JavaScript和AJAX调用已完成DOM树的呈现
  • 所需元素已启用并可见,可以识别通过Selenium传播的事件

您可以在以下页面中找到相关讨论:

  • 加载资源失败:服务器响应状态为400(错误请求)Spring JS调用Controller不工作
  • Spring post加载资源失败:服务器响应状态为400(错误请求)
  • Google adsense响应服务器响应状态为400()

加载资源失败:服务器通过Selenium以429(请求过多)和404(未找到)的状态响应ChromeDriver Chrome

 类似资料:
  • 问题内容: 我们正在使用Flask作为我们的API之一,我只是想知道是否有人知道如何返回HTTP响应201? 对于诸如404之类的错误,我们可以致电: 但是对于201我得到 LookupError:201都不例外 我是否需要创建自己的例外,像这样的文档? 问题答案: 你可以在这里阅读。

  • 我正在尝试使用BitBucket GIT存储库设置Jenkins,但Jenkins控制台总是给我以下错误代码: 我尝试过很多不同的方法,但总是失败。我的服务器上允许9418端口上的通信量。服务器处于1 Gbps连接上。

  • 问题内容: 我们正在使用Flask作为我们的API之一,我只是想知道是否有人知道如何返回HTTP响应201? 对于诸如404之类的错误,我们可以致电: 但是对于201我得到 LookupError:201也不例外 我是否需要创建自己的例外,像这样的文档? 问题答案: 您可以在这里阅读。

  • 我试图为web api控制器中的GET方法返回一个状态代码304 not modified。 我成功的唯一方法是这样的: 这里的问题是,它并不是一个例外,它只是没有被修改,所以客户端缓存是可以的。我还希望返回类型为User(正如所有web api示例使用GET显示的那样),而不是返回HttpResponseMessage或类似的内容。

  • 我使用curl获取http头以查找http状态代码并返回响应。我使用以下命令获取http头

  • 我在TYPO3 v10中为我的robots.txt使用静态文本路由(默认为. htaccess文件)。文本按预期传递,但标头中的StatusCode为404。我不知道如何解决这个问题,因为静态文本路由中没有设置状态代码的选项。 这是我的路线代码(如文档中所述:https://docs.typo3.org/m/typo3/reference-coreapi/10.4/en-us/ApiOvervie