2011-02-26 19:03:30 +00:00
|
|
|
#include "Execute.h"
|
|
|
|
#include "WebPage.h"
|
2012-04-04 22:18:17 +00:00
|
|
|
#include "WebPageManager.h"
|
2013-02-02 22:32:54 +00:00
|
|
|
#include "ErrorMessage.h"
|
2011-02-26 19:03:30 +00:00
|
|
|
|
2012-07-08 19:04:30 +00:00
|
|
|
Execute::Execute(WebPageManager *manager, QStringList &arguments, QObject *parent) : SocketCommand(manager, arguments, parent) {
|
2011-02-26 19:03:30 +00:00
|
|
|
}
|
|
|
|
|
2012-03-16 23:58:58 +00:00
|
|
|
void Execute::start() {
|
2017-01-04 00:33:42 +00:00
|
|
|
QString jsonArgs;
|
|
|
|
if (arguments().length()>1){
|
|
|
|
jsonArgs = arguments()[1];
|
|
|
|
} else {
|
|
|
|
jsonArgs ="[]";
|
|
|
|
}
|
|
|
|
QString script = QString("(function(){"
|
|
|
|
" for(var i=0; i<arguments.length; i++) {"
|
|
|
|
" arguments[i] = JSON.parse(arguments[i]);"
|
2017-01-27 21:48:04 +00:00
|
|
|
" var elem_id;"
|
|
|
|
" if (elem_id = arguments[i]['element-581e-422e-8be1-884c4e116226']) {"
|
|
|
|
" arguments[i] = Capybara.getNode(elem_id);"
|
2017-01-04 00:33:42 +00:00
|
|
|
" };"
|
|
|
|
" };"
|
|
|
|
" %1 }).apply(null, %2); 'success'").arg(arguments()[0], jsonArgs);
|
|
|
|
|
|
|
|
QObject invocation_stub;
|
|
|
|
invocation_stub.setProperty("allowUnattached", false);
|
|
|
|
page()->currentFrame()->addToJavaScriptWindowObject("CapybaraInvocation", &invocation_stub);
|
2011-04-19 07:16:25 +00:00
|
|
|
QVariant result = page()->currentFrame()->evaluateJavaScript(script);
|
2011-02-26 19:03:30 +00:00
|
|
|
if (result.isValid()) {
|
2013-02-11 23:31:41 +00:00
|
|
|
finish(true);
|
2011-02-26 19:03:30 +00:00
|
|
|
} else {
|
2013-02-11 23:31:41 +00:00
|
|
|
finish(false, new ErrorMessage("Javascript failed to execute"));
|
2011-02-26 19:03:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|