Как отобразить ответ от пользовательских скриптов phantomjs - PullRequest
0 голосов
/ 27 мая 2018

Мне не удается отобразить ответ из моего пользовательского файла .proc.Я запускаю php-phantomjs на Laravel 5.6 на Ubuntu.У меня есть конечная точка URL, которую я использую для вызова пользовательского файла следующим образом:

public function getLinks()
{
    $location = base_path('phantom-scripts');


    $serviceContainer = ServiceContainer::getInstance();

    $procedureLoader = $serviceContainer->get('procedure_loader_factory')
        ->createProcedureLoader($location);

    $client = Client::getInstance();
    $client->getEngine()->setPath(\Config::get('phantomPath'));
    $client->setProcedure('my_procedure');
    $client->getProcedureLoader()->addLoader($procedureLoader);

    $request  = $client->getMessageFactory()->createRequest();
    $response = $client->getMessageFactory()->createResponse();

    $client->send($request, $response);
    dd($response->getContent());
  }

Вот файл .proc

var page = require('webpage').create();
var fs = require('fs');

console.log("loading...");



var url = 'http://www.example.com';

page.open(url, function (status) {

    if (status === "success") {

        var contentNeeded = page.evaluate(function () {
            return document.querySelector("h1").outerHTML;
        });


        console.log(contentNeeded);

    }


});


phantom.exit();

Я хочу отобразить 'contentNeeded 'в моем браузере.

1 Ответ

0 голосов
/ 28 мая 2018

PhantomJS завершает работу слишком рано в вашем скрипте.

page.open вызовы являются асинхронными (кто знает, сколько времени займет открытие этого URL), поэтому phantom.exit() запускается сразу после того, как браузер только начал открывать этот URL.Вместо выхода из PhantomJS после получения информации в обратном вызове:

if (status === "success") {

    var contentNeeded = page.evaluate(function () {
        return document.querySelector("h1").outerHTML;
    });

    console.log(contentNeeded);
    phantom.exit();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...