【问题标题】:QWebInspector: How to switch tab manuallyQWebInspector:如何手动切换标签
【发布时间】:2013-09-15 14:53:29
【问题描述】:

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

现在它看起来像:

我想看到的:

脚本来源:

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方法也是合适的! 谢谢!

【问题讨论】:

    标签: python pyqt pyqt4 qtwebkit


    【解决方案1】:

    WebInspector 基于 web。您将需要获得检查员的第一个也是唯一的孩子,它将是 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

    【讨论】:

    • 你好,对于 qt 5.8 我得到 TypeError:​ null is not an object (evalating 'document.querySelector('.toolbar-item.console')​.click')​(在 null:​ 1:​126)​。我延迟了 3 秒,发生此异常时所有选项卡都可见
    猜你喜欢
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多