Quindi diciamo che sto cercando di fare clic su un link nella QWebView, qui è quello che ho:Qt: Forza QWebView per fare clic su un elemento web, anche uno non visibile nella finestra
// extending QWebView
void MyWebView::click(const QString &selectorQuery)
{
QWebElement el = this->page()->mainFrame()->findFirstElement(selectorQuery);
if (!el)
return;
el.setFocus();
QMouseEvent pressEvent(QMouseEvent::MouseButtonPress, el.geometry().center(),
Qt::MouseButton::LeftButton, Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(this, &pressEvent);
QMouseEvent releaseEvent(QMouseEvent::MouseButtonRelease,
el.geometry().center(), Qt::MouseButton::LeftButton,
Qt::LeftButton, Qt::NoModifier);
QCoreApplication::sendEvent(this, &releaseEvent);
}
E si chiama come così:
myWebView->click("a[href]"); // will click first link on page
myWebView->click("input[type=submit]"); // submits a form
l'unico problema è: se l'elemento non è visibile nella finestra, è impossibile fare clic su. Quello che voglio dire è che se devi scorrere verso il basso per vederlo, non puoi cliccarlo. Immagino che questo abbia a che fare con la geometria, dal momento che l'elemento non viene visualizzato sullo schermo e non può fare il calcolo matematico per fare clic su di esso.
Qualche idea per aggirare questo? Forse un modo per far sì che la finestra si comporti come un miliardo di miliardi di pixel ma sembra ancora 200x200?
OK risposta, potrebbe essere una spiegazione? – quantum