public Object executeScript(String script, Object... args) {
script = script.replaceAll("\"", "\\\"");
Object[] convertedArgs = convertToJsObjects(args);
Command command = new Command(context, null, "executeScript", script, convertedArgs);
Response response = extension.sendMessageAndWaitForResponse(WebDriverException.class, command);
context = response.getContext();
response.ifNecessaryThrow(WebDriverException.class);
if ("NULL".equals(response.getExtraResult("resultType")))
return null;
String resultType = (String) response.getExtraResult("resultType");
if ("ELEMENT".equals(resultType))
return new FirefoxWebElement(this, response.getResponseText());
Object result = response.getExtraResult("response");
if (result instanceof Integer)
return new Long(response.getResponseText());
return result;
}