This commit is contained in:
steven 2025-08-11 22:23:30 +02:00
commit 72a26edcff
22092 changed files with 2101903 additions and 0 deletions

View file

@ -0,0 +1,104 @@
<?php
namespace Spekulatius\PHPScraper\Tests;
class CustomSelectorTest extends \PHPUnit\Framework\TestCase
{
/**
* @test
*/
public function testFailedSelectionBasedOnId()
{
// Navigate to test page
$web = new \Spekulatius\PHPScraper\PHPScraper;
$web->go('https://test-pages.phpscraper.de/content/selectors.html');
// Ensure we got the test page.
$this->assertSame(
'Selector Tests',
$web->title
);
// Trigger failing test.
try {
$web->filterFirstText("//[@id='by-id']");
} catch (\Exception $e) {
$this->assertSame(
'DOMXPath::query(): Invalid expression',
$e->getMessage()
);
}
}
/**
* @test
*/
public function testSelectionBasedOnId()
{
// Navigate to test page
$web = new \Spekulatius\PHPScraper\PHPScraper;
$web->go('https://test-pages.phpscraper.de/content/selectors.html');
// Ensure we got the test page.
$this->assertSame(
'Selector Tests',
$web->title
);
// Select content using `->text()`
$this->assertSame(
'Content by ID',
$web->filterFirstText("//*[@id='by-id']")
);
}
/**
* @test
*/
public function testSelectionBasedOnTag()
{
// Navigate to test page
$web = new \Spekulatius\PHPScraper\PHPScraper;
$web->go('https://test-pages.phpscraper.de/content/selectors.html');
// Ensure we got the test page.
$this->assertSame(
'Selector Tests',
$web->title
);
// Select single string using first and chain `->text()`
$this->assertSame(
'Selector Tests (h1)',
$web->filterFirst('//h1')->text()
);
// Select as array using `filterTexts`:
$this->assertSame(
['Selector Tests (h1)'],
$web->filterTexts('//h1')
);
}
/**
* @test
*/
public function testSelectionBasedOnClass()
{
// Navigate to test page
$web = new \Spekulatius\PHPScraper\PHPScraper;
$web->go('https://test-pages.phpscraper.de/content/selectors.html');
// Ensure we got the test page.
$this->assertSame(
'Selector Tests',
$web->title
);
// Select without `->text()` and using the filterTexts-method instead.
$this->assertSame(
['Content by Class 1', 'Content by Class 2'],
$web->filterTexts("//*[@class='by-class']")
);
}
}