package com.gorillalogic.agents.html.automators;
import org.openqa.selenium.JavascriptExecutor;
import com.gorillalogic.monkeytalk.Command;
public class ExecAutomator extends AutomatorBase {
public static String componentType = "ExecAutomator";
@Override
public String getComponentType() {
return componentType;
}
@Override
public String play(Command command) {
return doExec(command);
}
/**
* JavaScript implementation:
* var MonkeyExec = {};
* MonkeyExec.getSomething = function(args) {
* var result;
* // Do work...
* return result;
* };
*
* MonkeyTalk command:
* MonkeyExec * getSomething arg1 arg2 ...
*
* @param command
* @return The results we received from the js function
*/
private String doExec(Command command) {
String result = null;
String component = command.getComponentType();
String action = command.getAction();
String args = command.getArgsAsJsArray();
String jsString = "return " + component + "." + action + "(" + args + ");";
JavascriptExecutor js = (JavascriptExecutor) driver;
try {
result = (String) js.executeScript(jsString);
} catch (Exception e) {
throw new IllegalArgumentException("Unrecognized web component type: " + component + " with action: " + action);
}
return result;
}
}