avoir un DOM du HTML suivant; Comment suivre un lien (href) dans qwebkit (spécifiquement qwebpage). p> Veuillez noter que c'est une image qui est lié.
Je ne peux pas le faire (et je ne veux même pas si je pouvais) en simulant un clic de souris comme je n'utilise pas qwebview, je n'ai pas la page rendue. P> p>
3 Réponses :
En supposant que vous avez le QWebElement du lien dans une variable appelé «lien» (situé via FindFirst ou autre): p>
link.evaluatjavaScript ("var evobj = document.creeeevent (" Mouseevents "); Evobj.initevent (" Cliquez sur ", vrai, vrai); cela.dispatchevent (Evobj);") P> blockQuote>
(Ceci est en Python, mais c'est le JavaScript qui compte. Et oui, c'est simuler un clic de souris, mais comme il n'utilise pas de coordonnées, cela fonctionne bien avec un QWOBPAGE interdit.) P>
merci - j'ai trouvé cela travaillait dans des cas où cela.click () n'a pas
Pour moi la même chose, c'est-à-dire que cela.click () n'a pas travaillé (dans certains cas) mais cela a fait. Pouvez-vous expliquer pourquoi c'est?
@Albert dans quel navigateur respectez-vous cela?
@PIOLDOBROGOST: En webkit lui-même, pas dans aucun navigateur. J'utilise l'interface Qwebkit.
Utilisation de DOM 'CODE> Cliquez sur () CODE> La fonction de script Java sur l'élément fait le truc:
Si vous avez QWWebView et que vous ne vous souciez pas de faire défiler l'automatisation, cela peut aider:
const QWebElement &element=__your_element__; QWebView *view =__your_view__; QWebFrame *const frame=view->page()->mainFrame(); QPoint const elemPos=element.geometry().center(); frame->setScrollPosition(elemPos); QPoint const scrollPos=frame->scrollPosition(); QMouseEvent * const impossibleMousePress = new QMouseEvent(QEvent::MouseButtonPress,elemPos-scrollPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier); QMouseEvent * const impossibleMouseRelease = new QMouseEvent(QEvent::MouseButtonRelease,elemPos-scrollPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier); QApplication::postEvent(view,impossibleMousePress); QApplication::postEvent(view,impossibleMouseRelease);