qt+evaluatejavascript

来源:互联网 发布:荣耀v10网络制式 编辑:程序博客网 时间:2024/05/28 05:17

think the click() failure may have something to do with how the google page uses javascript to transform the original A element after it loads. If you wrap your evaluateJavaScript() call in an alert(), you can see that the click method is 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"@staticmethoddef _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

1 0
原创粉丝点击