Olá
Estou tendo dois erros ao executar os testes do PHPUnit. Eu segui a recomendação do https://cursos.alura.com.br/forum/topico-falha-nos-testes-227160, porém mesmo assim tive este erro. Poderia me ajudar?
CViniciusSDias\GoogleCrawler\Tests\Functional\DefaultCrawlerTest::testSearchResultsWithoutProxy
CViniciusSDias\GoogleCrawler\Exception\InvalidGoogleHtmlException: No parsable element foundCViniciusSDias\GoogleCrawler\Tests\Functional\PersonalizedCrawlerTest::testSearchOnBrazilianGoogleWithoutProxy
CViniciusSDias\GoogleCrawler\Exception\InvalidGoogleHtmlException: No parsable element found
public function testSearchResultsWithoutProxy()
{
$searchTerm = new SearchTerm('Test');
$crawler = new Crawler();
$results = $crawler->getResults($searchTerm);
$this->checkResults($results);
}
public function testSearchOnBrazilianGoogleWithoutProxy()
{
$searchTerm = new SearchTerm('Test');
$crawler = new Crawler(new NoProxy());
$results = $crawler->getResults($searchTerm, 'google.com.br', 'BR');
$this->checkResults($results);
}
public function getResults(
SearchTermInterface $searchTerm,
string $googleDomain = 'google.com',
string $countryCode = ''
): ResultList {
if (stripos($googleDomain, 'google.') === false || stripos($googleDomain, 'http') === 0) {
throw new \InvalidArgumentException('Invalid google domain');
}
$googleUrl = "https://$googleDomain/search?q={$searchTerm}&num=100";
if (!empty($countryCode)) {
$googleUrl .= "&gl={$countryCode}";
}
$response = $this->proxy->getHttpResponse($googleUrl);
$stringResponse = (string) $response->getBody();
$domCrawler = new DomCrawler($stringResponse);
$googleResultList = $this->createGoogleResultList($domCrawler);
$resultList = new ResultList($googleResultList->count());
foreach ($googleResultList as $googleResultElement) {
try {
$parsedResult = $this->parseDomElement($googleResultElement);
$resultList->addResult($parsedResult);
} catch (InvalidResultException $exception) {
error_log(
'Error parsing the following result: ' . print_r($googleResultElement, true),
3,
__DIR__ . '/../var/log/crawler-errors.log'
);
}
}
return $resultList;
}
private function createGoogleResultList(DomCrawler $domCrawler): DomCrawler
{
$googleResultList = $domCrawler->filterXPath('//div[@class="Gx5Zad fP1Qef xpd EtOod pkphOe"]');
if ($googleResultList->count() === 0) {
throw new InvalidGoogleHtmlException('No parsable element found');
}
return $googleResultList;
}