ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – QWebInspector:如何手动切换选项卡

2019-07-03 15:45:23  阅读:244  来源: 互联网

标签:python pyqt pyqt4 qtwebkit


当我使用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方法也适用!
谢谢!

解决方法:

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

标签:python,pyqt,pyqt4,qtwebkit
来源: https://codeday.me/bug/20190703/1368028.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有