2014-10-11 2 views
1

Я использую модуль WWW::Mechanize::PhantomJS, который наследует от WWW::Mechanize. Однако, похоже, некоторые методы, такие как mirror, не работают в PhantomJS.Использовать унаследованный метод от другого модуля

Can't locate object method "mirror" via package "WWW::Mechanize::PhantomJS" at ...

Как можно использовать этот метод через объект из PhantomJS?

ответ

2

Насколько я вижу, WWW::Mechanize::PhantomJS не наследует от WWW::Mechanize. Вместо этого он пытается имитировать интерфейс WWW::Mechanize, но с фантомами как нижний слой. Поскольку PhantomJS выполняет весь доступ к сети, а не LWP::UserAgent, который лежит в основе WWW::Mechanize, вы не можете просто повторно использовать зеркальный метод от WWW::Mechanize в WWW::Mechanize::PhantomJS.

+0

В этом случае я решил создать два объекта; 'my $ url = WWW :: Mechanize-> new();' и 'my $ phantom = WWW :: Mechanize :: PhantomJS-> new();' – Macabeus

+0

@KeplerBR: до тех пор, пока у вас есть только простые статические ссылки на ресурсов и ничего динамически генерируемого JavaScript 'WWW :: Mechanize' достаточно. Но как только вам понадобится JavaScript, 'WWW :: Mechanize' будет недостаточно. –