Я пытаюсь сканировать некоторые веб-страницы, требующие аутентификации, то есть сначала вы должны войти в систему, а затем вы можете получить доступ к страницам.
Для этого я пытаюсь использовать Symfony\Component\DomCrawler\Crawler
в моем приложении (я не использую Symfony Framework, я использовал symfony/dom-crawler
с помощью Composer).
<?php
require_once('/vendor/autoload.php');
use Symfony\Component\DomCrawler\Crawler;
class myTest extends WebTestCase {
function __construct () {
$crawler = new Crawler(file_get_contents('http://test.com/index.php'));
var_dump($crawler->filter('.menu_nav')->eq(0)->text());
}
}
new myTest;
Это прекрасно работает для простых страниц, но не для аутентифицированных, то есть тех, которые требуют имя пользователя и пароль. Так что для этого я пытаюсь использовать эта страница с сайта Symfony и вставьте этот код:
<?php
require_once('/vendor/autoload.php');
use Symfony\Component\DomCrawler\Crawler;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class myTest extends WebTestCase {
function __construct () {
$client = static::createClient(array(), array(
'PHP_AUTH_USER' => 'username',
'PHP_AUTH_PW' => 'pa$$word',
));
// $crawler = new Crawler(file_get_contents('http://test.com/index.php'));
// var_dump($crawler->filter('.menu_nav')->eq(0)->text());
}
}
new myTest;
Но я получаю это:
Fatal error: Uncaught exception 'RuntimeException' with message 'You must override the KernelTestCase::createKernel() method.' in E:\xampp\htdocs\testCrawler\vendor\symfony\framework-bundle\Symfony\Bundle\FrameworkBundle\Test\KernelTestCase.php on line 44
Для решения этой проблемы я добавил phpunit.xml
в path/to/my/project/phpunit.xml
с этим содержанием:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true" bootstrap="vendor/autoload.php">
<php>
<server name="KERNEL_DIR" value="path/to/my/project" />
</php>
<testsuites>
<testsuite name="Application Test Suite">
<directory>./stats/Test/</directory>
</testsuite>
</testsuites>
</phpunit>
Из командной строки, если я наберу phpunit
, Я получил:
path/to.my/project>phpunit
PHPUnit 4.5.0 by Sebastian Bergmann and contributors.
Configuration read from path/to.my/project\phpunit.xml
Time: 300 ms, Memory: 1.50Mb
No tests executed!
path/to.my/project>phpunit
Это показывает, что phpunit знает о файле phpunit.xml, но ошибка все еще существует.
Обновить: Цель состоит не в том, чтобы использовать эту программу как часть модульного теста или каких-либо других тестов, а состоит в том, чтобы сканировать страницы любыми возможными решениями.
Задача ещё не решена.
Других решений пока нет …