Получение заголовка страницы в PhantomJS

Я экспериментирую с PhantomJS. Вот простой код, который не работает, как ожидалось. После запуска я вижу в консоли success а также foo но заголовок документа - пустая строка.

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

page.open('https://www.google.com', function(status) {
  console.log("Status: " + status);
  if(status === "success") {
    console.log("foo");
    console.log(document.title);
    phantom.exit();
  }
});

1 ответ

Решение

Самый простой способ получить название - использовать page.title,

Причина document.title не дает вам ничего, потому что PhantomJS имеет два различных контекста. Только контекст страницы (внутри page.evaluate()) имеет доступ к DOM и, следовательно, document объект. Внешний контекст также имеет document объект, но он ничего не делает и поэтому является лишь фиктивным объектом. То же самое касается window,

Таким образом, другой способ получить заголовок страницы - использовать:

console.log(page.evaluate(function(){
    return document.title;
}));
Другие вопросы по тегам