2017-01-12 2 views
0

Я пытаюсь реализовать явно полезный и мощный url-to-image module. Используя сценарий основного примера, я могу отображать и сохранять как .png любой веб-сайт, который я пробовал, кроме того, который мне нужен, который использует угловые.url-to-image отображает каждый URL-адрес, который я пытаюсь, за исключением того, что мне нужно

Мне нужно что-то за страницей входа, но я даже не могу сделать страницу входа в систему: http://momentum-leaderboard.herokuapp.com/#/login.

Любые идеи о том, как заставить этот модуль работать для этого URL-адреса? Или идеи по другому инструменту для создания изображения такой страницы?

ответ

1

PhantomJS самостоятельно может решить эту проблему. Этот сценарий должен быть достаточно, чтобы сделать эту страницу входа: rasterizeSimple.js

var page = require('webpage').create(), 
    system = require('system'), 
    address, output, size; 

if (system.args.length != 3) { 
    console.log('Usage: rasterize.js URL filename'); 
    phantom.exit(1); 
} else { 
    address = system.args[1]; 
    output = system.args[2]; 
    page.viewportSize = { width: 600, height: 600 }; 

    page.open(address, function (status) { 
     if (status !== 'success') { 
      console.log('Unable to load the address!'); 
      phantom.exit(1); 
     } else { 
      window.setTimeout(function() { 
       page.render(output); 
       phantom.exit(); 
      }, 2000); 
     } 
    }); 
} 

обходя экран входа другой историю. Поскольку PhantomJS является веб-браузером, просто откройте страницу входа в систему, заполните форму, нажмите кнопку входа в систему, подождите пару секунд, а затем повторно вызовите интересующий URL-адрес, теперь как зарегистрированный пользователь. Вход в форму можно сделать разными способами, если вы предпочитаете, вы можете ввести jquery. Не тестировал этот второй скрипт, но он должен вас поймать.

page.open(address, function (status) { 
     if (page.injectJs('jquery-1.11.2.js')) { // Loads from the working dir i think 
      if (status !== 'success') { 
       console.log('Unable to load the address!'); 
       phantom.exit(1); 
      } else { 
       page.evaluate(function() { 
        $('input[name=username]').val('username'); 
        $('input[name=password]').val('password123'); 
        $('input[name=submit]').click(); 
       }); 

       window.setTimeout(function() { 
        page.open(address, function (status) { 
         if (status == 'success') { 
          window.setTimeout(function() { 
           page.render(output); 
           phantom.exit(); 
          }, 2000); 
         } 
        }); 
       }, 2000); 
      } 
     } 
    }); 
+0

Я по-настоящему ценю ваш ответ, но это по-прежнему представляет собой чистый pdf-документ, такой же, как и другие модули, как библиотеки, которые я пробовал. Он работает на вас? Если да, то какой ОС вы работаете? –

+1

Windows 10. Чтобы избежать проблем, вы можете получить к нему доступ из другого веб-браузера с того же компьютера? Имеет ли в командной строке phantomjs права администратора? – GantTheWanderer

+0

Да, я могу получить доступ к этой странице входа с того же компьютера или любого устройства. Я запускаюсь из командной строки с правами администратора. Я пробовал OSX и Windows 8 и постоянно получал пустой pdf-файл для этой и единственной страницы. Чтобы быть понятным, вы создаете эту страницу входа в систему с помощью этого первого скрипта на ОС Windows 10? Еще раз спасибо, я очень ценю ваше понимание. –

 Смежные вопросы

  • Нет связанных вопросов^_^