4

当我使用 QWebInspector(python,PyQT4)时,它总是以默认激活的“元素”选项卡打开。
有没有办法以编程方式将选项卡切换到网络?

现在它看起来像: QWebInspector 打开

我想看到的: 在此处输入图像描述

脚本源:

import sys, PyQt4.QtCore, PyQt4.QtGui, PyQt4.QtWebKit

if __name__ == '__main__':
    app = PyQt4.QtGui.QApplication(sys.argv)
    webview = PyQt4.QtWebKit.QWebView()
    inspector = PyQt4.QtWebKit.QWebInspector()

    webview.page().settings().setAttribute(
        PyQt4.QtWebKit.QWebSettings.DeveloperExtrasEnabled, True
    )
    inspector.setPage(webview.page())

    inspector.showMaximized()

    webview.load(PyQt4.QtCore.QUrl('http://yahoo.com'))
    app.exec_()

当然,合适的С++/QT方法也是合适的!谢谢!

4

1 回答 1

2

WebInspector 基于网络。您将需要获得检查员的第一个也是唯一的孩子,它将是 QWebView。

像那样:

QList<QWidget*> list = inspector.findChildren<QWidget *>();
QWebView* wv =(QWebView*) list.at(0);

然后连接到该视图的javaScriptWindowObjectCleared信号,并在连接的槽中执行javascript。您将需要对象来处理此问题。例如,我称它为someObject

QObject::connect(
    wv->page()->mainFrame(), 
    SIGNAL(javaScriptWindowObjectCleared()),
    someObject, 
    SLOT(openNetworkTab())
);

将插槽添加到someObject的类:

void openNetworkTab(){
    wv->page()->mainFrame()->evaluateJavaScript("document.addEventListener('DOMContentLoaded',function(){setTimeout(function(){document.querySelector('.toolbar-item.network').click()},200);});");
}

延迟 200 只是为了在点击之前等待所有事件绑定初始化

这里列出了所有检查器选项卡类,以防万一:.elements、.resources、.network、.scripts、.timeline、.profiles、.audits、.console

于 2014-08-11T20:41:18.397 回答