所以我們可以說我試圖點擊QWebView的鏈接,這裏是我有:的Qt:強制QWebView點擊一個網頁元素上,甚至是一個不可見的窗口
// 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);
}
而且你叫它像這樣:
myWebView->click("a[href]"); // will click first link on page
myWebView->click("input[type=submit]"); // submits a form
唯一的問題是:如果元素在窗口中是不可見的,這是不可能的點擊。我的意思是,如果你不得不向下滾動才能看到它,你不能點擊它。我想這與幾何圖形有關,因爲元素沒有顯示在屏幕上,所以不能用數學來正確地點擊它。
任何想法解決這個問題?也許某種方式可以使窗口的行爲像十億億像素,但仍然看起來像200x200?
好的答案,可能是一些解釋? – quantum 2012-10-20 01:36:16