Навигация по формам и получение DOM-элементов с веб-сайта с помощью Guzzle / Goutte (PHP, отладка) - PullRequest
0 голосов
/ 06 октября 2019

Я довольно новичок в PHP и играю с Goutte / Guzzle, чтобы получить некоторую основную информацию с веб-сайта после заполнения нескольких форм.

Однако у меня проблемы с поиском проблем (их может быть множество), так как я не смог найти способ отобразить или сохранить в журнале какие-либо результаты или проблемы. Сценарий заканчивается кодом 0, но ничего не возвращает. Подсказка о том, как распечатать то, что в данный момент хранится в $ client, уже прошла бы долгий путь.

Вот весь код, который я пытаюсь запустить с кучей комментариев для пояснения. Я извиняюсь за использование такого большого блока, но у любого из этого могут быть проблемы.

<?php

use Goutte\Client;
use GuzzleHttp\Client as GuzzleClient;

class grabPlate
{
    // WKZ
    public function checkPlate
    {
        $goutteClient = new Client();
        $guzzleClient = new GuzzleClient(array(
            'cookies'  => true,
            'timeout' => 60,
        ));
        $goutteClient->setClient($guzzleClient);

        $crawler = $goutteClient->request('GET', 'https://kfz-portal.berlin.de/kfzonline.public/start.html?oe=00.00.11.000000');

        //Click the first "Start" in the top left
        $link = $crawler
            ->filter('a:contains("Start")')
            ->eq(0)
            ->link()
        ;
        $crawler = $client->click($link);


        //Check checkbox, fill in name and press the button
        $buttonCrawlerNode = $crawler->selectButton('Weiter');
        $form = $buttonCrawlerNode->form();
        $form['gwt-uid-1']->tick();
        $form['select2-hidden-accessible']->select('Herr');
        $form['gwt-uid-4'] = 'John';
        $form['gwt-uid-5'] = 'Doe';
        $client->submit($form);

        //Fill some Data into the forms and search
        $buttonCrawlerNode = $crawler->selectButton('Button-3616');
        $form = $buttonCrawlerNode->form();
        $form['.kfzonline-KennzeichenGrossEb'] = 'AB';
        $form['.kfzonline-KennzeichenGrossEn'] = '123';
        $client->submit($form);

        //Extract collection
        $info = $crawler->extract('.collection');

        //return 1 if something is inside collection, 0 if it's empty
        if($info == NULL) {
            return 1;
        } else {
            return 0;
        }




    }
}
 ?>

Как я уже сказал, просто запуск скрипта в PHPStorm возвращает статус 0. Однако при подключении его к API иполучая доступ к нему, я получаю ответ тайм-аута сервера.

1 Ответ

0 голосов
/ 06 октября 2019

Вы должны либо использовать отладку. Установите xDebug для этого в PHP. Это также легко интегрировать в Phpstorm. В качестве альтернативы используйте var_dump() для вывода на консоль отладочной информации о переменных любого типа.

...