diff --git a/python/pyphantomjs/phantom.py b/python/pyphantomjs/phantom.py index e4970a01..3dd656b8 100644 --- a/python/pyphantomjs/phantom.py +++ b/python/pyphantomjs/phantom.py @@ -29,7 +29,6 @@ from __init__ import __version_info__ from utils import injectJsInFrame, QPyFile from plugincontroller import do_action from webpage import WebPage -from networkaccessmanager import NetworkAccessManager from filesystem import FileSystem from encoding import Encode @@ -42,10 +41,11 @@ class Phantom(QObject): self.m_defaultPageSettings = {} self.m_pages = [] self.m_verbose = args.verbose - self.m_page = WebPage(self) + self.m_page = WebPage(self, args) self.m_returnValue = 0 self.m_terminated = False # setup the values from args + self.app_args = args self.m_scriptFile = args.script self.m_args = args.script_args self.m_scriptEncoding = Encode(args.script_encoding, 'utf-8') @@ -61,10 +61,6 @@ class Phantom(QObject): proxy = QNetworkProxy(QNetworkProxy.HttpProxy, args.proxy[0], int(args.proxy[1])) QNetworkProxy.setApplicationProxy(proxy) - # Provide WebPage with a non-standard Network Access Manager - self.m_netAccessMan = NetworkAccessManager(self, args) - self.m_page.setNetworkAccessManager(self.m_netAccessMan) - self.m_page.javaScriptConsoleMessageSent.connect(self.printConsoleMessage) self.m_defaultPageSettings['loadImages'] = args.load_images @@ -112,10 +108,9 @@ class Phantom(QObject): @pyqtSlot(result=WebPage) def createWebPage(self): - page = WebPage(self) + page = WebPage(self, self.app_args) self.m_pages.append(page) page.applySettings(self.m_defaultPageSettings) - page.setNetworkAccessManager(self.m_netAccessMan) page.libraryPath = os.path.dirname(os.path.abspath(self.m_scriptFile)) return page diff --git a/python/pyphantomjs/webpage.py b/python/pyphantomjs/webpage.py index ed489448..e1dcc14c 100644 --- a/python/pyphantomjs/webpage.py +++ b/python/pyphantomjs/webpage.py @@ -30,6 +30,7 @@ from PyQt4.QtWebKit import QWebSettings, QWebPage from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest from plugincontroller import do_action +from networkaccessmanager import NetworkAccessManager from utils import injectJsInFrame @@ -73,7 +74,7 @@ class WebPage(QObject): resourceReceived = pyqtSignal('QVariantMap') resourceRequested = pyqtSignal('QVariantMap') - def __init__(self, parent): + def __init__(self, parent, args): super(WebPage, self).__init__(parent) self.m_parent = parent @@ -113,6 +114,12 @@ class WebPage(QObject): # Ensure we have a document.body. self.m_webPage.mainFrame().setHtml('') + # Custom network access manager to allow traffic monitoring + networkAccessManager = NetworkAccessManager(self, args) + self.m_webPage.setNetworkAccessManager(networkAccessManager) + networkAccessManager.resourceRequested.connect(self.resourceRequested) + networkAccessManager.resourceReceived.connect(self.resourceReceived) + self.m_webPage.setViewportSize(QSize(400, 300)) do_action('WebPageInit') @@ -252,11 +259,6 @@ class WebPage(QObject): self.m_webPage.mainFrame().print_(p) return True - def setNetworkAccessManager(self, networkAccessManager): - self.m_webPage.setNetworkAccessManager(networkAccessManager) - networkAccessManager.resourceRequested.connect(self.resourceRequested) - networkAccessManager.resourceReceived.connect(self.resourceReceived) - def stringToPointSize(self, string): units = ( ('mm', 72 / 25.4),