QWebPage获取资源列表/验证页面加载没有错误

2024-10-05 10:20:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在PySide加载一个网页。我想看看它是否已成功加载,没有错误。如果我有错误,我想知道。我不能简单地将“success”参数用于loadfinished信号,因为它似乎总是指示成功。我知道怎么做的唯一方法就是做这样的事情:

class WebPageResourceTracker(
    PySide.QtCore.QObject
):
    def __init__(self, url):
        PySide.QtCore.QObject.__init__(self)
        self.page = PySide.QtWebKit.QWebPage()
        self.frame = self.page.currentFrame()

        # The reason for the lambda is that otherwise I get this:
        #ASSERT: "self" in file /var/tmp/portage/dev-python/pyside-1.1.0/work/pyside-qt4.7+1.1.0/libpyside/signalmanager.cpp, line 534
        self.frame.loadFinished.connect(lambda ok: self.onLoadFinished(ok))
        self.page.networkAccessManager().finished.connect(lambda reply: self.onResourceFinished(reply))

        self.frame.setUrl(
            PySide.QtCore.QUrl(
                url,
            )
        )


    def onLoadFinished(self, ok):
        print 'onLoadFinished', ok

    def onResourceFinished(self, reply):
        print 'onResourceFinished', reply.url().toString(), reply.error()



import sys
from PySide import QtGui

app = QtGui.QApplication(sys.argv)
#WebPageResourceTracker("http://google.com")
WebPageResourceTracker(
    "http://migration.tanagerproductions.com/broken.html"
)
sys.exit(app.exec_())

但是,我可以想象有一种方法可以直接访问页面的资源列表,因为webkit检查器可以列出资源。。。在

另外:我还想知道页面中是否有JavaScript错误,我该怎么做?在


Tags: lambdaselfurldef错误syspageok
1条回答
网友
1楼 · 发布于 2024-10-05 10:20:54

一种方法是首先创建一个继承自^{}的新类,该类重写^{}。在createRequest函数中,首先调用基类/超类来获取请求,然后连接到^{}信号或QNetworkReply::finished并检查QNetworkReply::error函数。在

然后用^{}在QWebPage上设置此自定义QNetworkAccessManager。在

要截获JavaScript消息,需要创建一个继承自QWebPage的新类,该类重写^{}。对console.log的任何错误或调用都将传递到此函数:

This function is called whenever a JavaScript program tries to print a message to the web browser's console. For example in case of evaluation errors the source URL may be provided in sourceID as well as the lineNumber.

< EM>注:此答案假定pySead提供了完整的QtAPI,我还没有真正检查过python中的这一点,但这是我以前在C++中做过类似的事情。

相关问题 更多 >

    热门问题