capybara-webkit/src/JavascriptInvocation.cpp

38 lines
1.3 KiB
C++
Raw Normal View History

#include "JavascriptInvocation.h"
2012-12-11 03:53:03 +00:00
#include "WebPage.h"
#include <QApplication>
2012-12-11 03:53:03 +00:00
JavascriptInvocation::JavascriptInvocation(const QString &functionName, const QStringList &arguments, WebPage *page, QObject *parent) : QObject(parent) {
m_functionName = functionName;
m_arguments = arguments;
2012-12-11 03:53:03 +00:00
m_page = page;
}
QString &JavascriptInvocation::functionName() {
return m_functionName;
}
QStringList &JavascriptInvocation::arguments() {
return m_arguments;
}
2012-12-11 03:53:03 +00:00
void JavascriptInvocation::click(const QWebElement &element, int left, int top, int width, int height) {
QRect elementBox(left, top, width, height);
QWebFrame *parent = element.webFrame();
while (parent) {
elementBox = elementBox.translated(parent->geometry().topLeft());
parent = parent->parentFrame();
}
QRect viewport(QPoint(0, 0), m_page->viewportSize());
QPoint mousePos = elementBox.intersected(viewport).center();
QMouseEvent event(QEvent::MouseMove, mousePos, Qt::NoButton, Qt::NoButton, Qt::NoModifier);
QApplication::sendEvent(m_page, &event);
event = QMouseEvent(QEvent::MouseButtonPress, mousePos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QApplication::sendEvent(m_page, &event);
event = QMouseEvent(QEvent::MouseButtonRelease, mousePos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QApplication::sendEvent(m_page, &event);
}