php - Symfony Panther 中 getInternalResponse 的 getHeader 始终返回空数组

标签 php symfony testing symfony-panther

通过使用 Symfony Panther,我发送了一个请求并希望获得响应。我能够获取正文和状态代码,但对于 header 我只得到一个空数组。

$client = Client::createChromeClient();
$client->request('GET', 'https://google.com');
$client->getInternalResponse()->getHeaders(); // returned empty array!!!

最佳答案

Panther 无法访问 HTTP 响应,如本 github 问题 https://github.com/symfony/panther/issues/17 中所述。 .

但是如果你仔细阅读,你会发现这不是 Panther 的限制,而是 Selenium WebDriver 的限制。看这篇文章How to get HTTP Response Code using Selenium WebDriver .

这意味着“我可以使用 Symfony Panther 访问 HTTP 响应代码或 HTTP header 吗?”这个问题的答案。是“不,这是不可能的”。

虽然这是不可能的,但我发现的解决方法是创建一个 HttpClient 并使用它来发出请求并从中获取响应。

<?php

use Symfony\Component\HttpClient\HttpClient;

$client = HttpClient::create();
$response = $client->request('GET', $this->myBaseUri);
$statusCode = $response->getStatusCode();
$headers = $response->getHeaders();

这是 HTTP Client (Symfony Docs) 的文档如果你想尝试这种方式。

关于php - Symfony Panther 中 getInternalResponse 的 getHeader 始终返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66525366/

相关文章:

php - 包含来自 PHP 流的代码

symfony - 使用 DoctrineFixturesBundle 为生产数据库做种子是否安全?

Symfony2 & Twig - 主题文件上传小部件

Spring Boot 2.1/2.2 测试 - 如何在不为其他一切创建 bean 的情况下测试单个 Controller ?

c# - c# 中的单元测试,来自 .csv 文件的数据

php - 如果日期为空,如何调整年份

php - MySQL如何在虚拟字段定义中实现条件

php - 如何查找和识别字符串的特定部分?

symfony - 在奏鸣曲管理中更改sonata_type_date_picker的格式/语言

testing - Top 10 负面测试名单