js和qt4 evaluteJavascript
来源:互联网 发布:荣耀v10网络制式 编辑:程序博客网 时间:2024/05/19 19:13
#coding=utf-8__author__ = 'ds'from PyQt4.QtCore import *from PyQt4.QtWebKit import *from PyQt4.QtNetwork import *from PyQt4.QtGui import *import sys,osclass Page(QWebPage): def __init__(self, parent = None): super(Page, self).__init__(parent) #设置连接代理模式 #self.setLinkDelegationPolicy(QWebPage.DelegateAllLinks) #连接点击,加载URL地址 self.linkClicked.connect(self.onLinkClick) self.loadFinished.connect(self.onLoadFinish) def onLinkClick(self, url): self.mainFrame().load(url) @staticmethod def doMouseClick(obj, pos): # mouse down evt = QMouseEvent(QEvent.MouseButtonPress, pos, Qt.LeftButton, Qt.LeftButton, Qt.NoModifier) QApplication.sendEvent(obj, evt) # mouse up evt = QMouseEvent(QEvent.MouseButtonRelease, pos, Qt.LeftButton, Qt.LeftButton, Qt.NoModifier) QApplication.sendEvent(obj, evt) def onLoadFinish(self): css = 'a[class="mnav"][name="tj_trmap"]' js = 'this.click();' root = self.mainFrame().documentElement() link_map = root.findFirst(css) if link_map: #方案1:可能不会起作用,除了按钮以为并非对所有的链接都支持 #link_map.evaluateJavaScript(js) #方案2,直接做鼠标点击的模拟,对隐藏控件不行 #self.doMouseClick(self, link_map.geometry().center()) #方案3,使用event进行处理,只要支持事件,就可以(除非禁掉) link_map.evaluateJavaScript(""" //鼠标点击 var e = document.createEvent('MouseEvents'); e.initEvent('click', true, true); //将该事件分发给自己进行接收 this.dispatchEvent(e); //直接使用事件处理很好用 //this.addEventListener('click', function(){ // alert('test'); //}); """) print('Javascript Evaluated.')app = QApplication(sys.argv)QNetworkProxyFactory.setUseSystemConfiguration(True)mv = QWebView()mv.setWindowTitle(u'Javascript浏览器')mv.setPage(Page())mv.show()mv.load(QUrl('http://www.baidu.com'))app.exec_()
1 0
- js和qt4 evaluteJavascript
- QT4和QT5
- qt4和vs2010
- D-Bus和QT4
- DEV-C++ 和 QT4 合拍
- DEV-C++ 和 QT4 合拍
- QT4 自定义槽和信号
- QT4 自定义槽和信号
- ubuntu 安装QT4和cgal
- 移植qt4.7.4和tslib
- ]QT4 自定义槽和信号
- ubuntu安装Kdevelop和qt4
- Qt4的QDialog和QWidget
- QT4
- qt4
- 关于QT4 暂时发现的QT4和QT3的区别
- Ubuntu环境安装Qt4和使用Qt4初体验
- qt4:quit.cpp 使用信号和槽
- 循序渐进之Spring AOP(4) - Introduction
- Problem B: 数组逆序输出
- 第三章View的事件体系
- 解决com.android.volley.NoConnection error, java.io.InterruptedIOException
- 第四章、View的工作原理
- js和qt4 evaluteJavascript
- Hibernate Session 事务隔离级别回顾 持久化对象的状态 Session核心方法
- Main
- Tomcat安装的常见问题以及其第一个应用
- 通过接口定义Fragment之间的跳转
- android 关于textview跑马灯的问题解决方案
- 搭建Appium自动化测试平台环境(基于python&android)
- Google网络请求框架Volley源码浅析(二)
- python命令行自动补全