您的位置:首页 > Web前端 > JavaScript

qt+evaluatejavascript

2016-04-11 20:02 459 查看
think the
click()
failuremay have something to do with how the google page uses javascript to transform the original
A
elementafter it loads. If you wrap your
evaluateJavaScript()
callin an
alert()
,you can see that the
click
methodis
null
link.evaluateJavaScript('this.click')
It is not a 100% cross-browser support to be able to call "click" on a link. It would need to be a button.You have a couple alternatives...(#1) Just navigate to the href of the link
def _loadComplete(self):
page = self.page()
doc = page.currentFrame().documentElement()
link = doc.findFirst('#link-signup')
if link and not link.isNull():
self.load(QUrl.fromEncoded(link.attribute('href').toAscii()))
(#2) Simulate a click on the web view
def _loadComplete(self):
page = self.page()
doc = page.currentFrame().documentElement()
link = doc.findFirst('#link-signup')
if link and not link.isNull():
pos = link.geometry().center()
self._doMouseClick(page, pos)
else:
print "Link not found"

@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)
(#3) Make the link clickable via javascript
def _loadComplete(self):
page = self.page()
doc = page.currentFrame().documentElement()
link = doc.findFirst('#link-signup')
if link and not link.isNull():
link.evaluateJavaScript("""
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
this.dispatchEvent(e);
""")
原文地址:http://stackoverflow.com/questions/13553817/pyqt4-does-not-redirect-me-to-the-next-page/13554601#13554601[/code]
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: