python – QWebInspector:如何手动切换选项卡
作者:互联网
当我使用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