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:如何手动切换标签的主要内容,如果未能解决你的问题,请参考以下文章

web自动化,如何实现frame表单切换?

iPhone - 从 UIWebView 切换选项卡

vue中自己实现的页面切换标签手动关闭功能

在 Selenium Web Driver 中处理警报后如何切换回主窗口

web自动化 下拉框切换到新窗口

maven 如何给web项目添加jar包依赖