QWebInspector:如何手动切换标签
Posted
技术标签:
【中文标题】QWebInspector:如何手动切换标签【英文标题】:QWebInspector: How to switch tab manually 【发布时间】: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方法也是合适的! 谢谢!
【问题讨论】:
【参考方案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 秒,发生此异常时所有选项卡都可见以上是关于QWebInspector:如何手动切换标签的主要内容,如果未能解决你的问题,请参考以下文章