From f9b9a25d177ee814d84afd8318758ea1a6f769af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Fri, 12 Feb 2021 00:38:44 +0100 Subject: [PATCH] fix: prevent destructing the client if a crawler is still active --- src/Client.php | 2 +- tests/DomCrawler/CrawlerTest.php | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Client.php b/src/Client.php index 179d8744..eaedc222 100644 --- a/src/Client.php +++ b/src/Client.php @@ -283,7 +283,7 @@ protected function createCrawler(): PantherCrawler $this->start(); $elements = $this->webDriver->findElements(WebDriverBy::cssSelector('html')); - return new PantherCrawler($elements, $this->webDriver, $this->webDriver->getCurrentURL()); + return new PantherCrawler($elements, $this, $this->webDriver->getCurrentURL()); } protected function doRequest($request) diff --git a/tests/DomCrawler/CrawlerTest.php b/tests/DomCrawler/CrawlerTest.php index 164878ab..3ed141ef 100644 --- a/tests/DomCrawler/CrawlerTest.php +++ b/tests/DomCrawler/CrawlerTest.php @@ -338,4 +338,15 @@ public function testDoNotNormalizeText(): void self::createPantherClient()->request('GET', self::$baseUri.'/normalize.html')->filter('#normalize')->text(null, false); } + + public function testCrawlerStillWorksAfterClientDestruction(): void + { + $client = Client::createChromeClient(); + self::startWebServer(); + + $crawler = $client->request('GET', self::$baseUri.'/basic.html'); + unset($client); + + $this->assertStringContainsString('A basic page', $crawler->html()); + } }