org.uiautomation.ios.server.command.uiautomation.LogElementTreeNHandler Maven / Gradle / Ivy
The newest version!
/*
* Copyright 2012-2013 eBay Software Foundation and ios-driver committers
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.uiautomation.ios.server.command.uiautomation;
import com.google.common.collect.ImmutableMap;
import org.json.JSONException;
import org.json.JSONObject;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.remote.Response;
import org.uiautomation.ios.UIAModels.Orientation;
import org.uiautomation.ios.communication.WebDriverLikeRequest;
import org.uiautomation.ios.server.IOSServerManager;
import org.uiautomation.ios.server.ServerSideSession;
import org.uiautomation.ios.server.application.IOSRunningApplication;
import org.uiautomation.ios.server.command.PostHandleDecorator;
import org.uiautomation.ios.server.command.UIAScriptHandler;
import org.uiautomation.ios.utils.InstrumentsGeneratedImage;
import org.uiautomation.ios.utils.JSONWireImage;
import org.uiautomation.ios.wkrdp.RemoteIOSWebDriver;
import java.io.File;
import java.util.List;
import java.util.Map;
public class LogElementTreeNHandler extends UIAScriptHandler {
private static final String jsTemplate = "var root = UIAutomation.cache.get(':reference');"
+ "var result = root.tree(:attachScreenshot);"
+ "UIAutomation.createJSONResponse(':sessionId',0,result);";
public LogElementTreeNHandler(IOSServerManager driver, WebDriverLikeRequest request) {
super(driver, request);
String reference = "1";
if (request.hasVariable(":reference")) {
reference = request.getVariableValue(":reference");
}
addDecorator(new AttachScreenshotToLog(driver));
addDecorator(new GetHTMLForWebView(driver));
try {
if (request.getPayload().getBoolean("translation")) {
addDecorator(new AddTranslationToLog(driver));
}
} catch (JSONException e) {
e.printStackTrace();
}
String js;
try {
js = jsTemplate.replace(":sessionId", request.getSession())
.replace(":attachScreenshot", "" + request.getPayload().getBoolean("attachScreenshot"))
.replace(":reference", reference);
} catch (JSONException e) {
throw new WebDriverException("wrong params", e);
}
setJS(js);
}
class AddTranslationToLog extends PostHandleDecorator {
public AddTranslationToLog(IOSServerManager driver) {
super(driver);
}
@Override
public void decorate(Response response) {
Map value = (Map) response.getValue();
try {
Map rootNode = (Map) value.get("tree");
addTranslation(rootNode, getAUT());
} catch (Exception e) {
e.printStackTrace();
}
}
private void addTranslation(Map node, IOSRunningApplication aut)
throws JSONException {
node.put("l10n", aut.getTranslations((String) node.get("name")));
List