【发布时间】:2013-02-21 19:53:39
【问题描述】:
假设我正在尝试单击 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
唯一的问题是:如果该元素在窗口中不可见,则无法单击。我的意思是,如果您必须向下滚动才能看到它,则无法单击它。我想这与几何形状有关,因为该元素没有显示在屏幕上,因此无法正确单击它。
有什么想法可以解决这个问题吗?也许某种方式可以让窗口表现得像 10 亿 x 十亿像素,但看起来仍然是 200x200?
【问题讨论】: