package com.mumux.androidtesting.actions.impl;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
import com.mumux.androidtesting.actions.Action;
import com.mumux.androidtesting.actions.argument.ActionArgument;
import com.mumux.androidtesting.actions.argument.ArgumentType;
@SuppressWarnings("unused")
public class InputAction extends Action {
private String description;
private String value;
public InputAction() {
super("INPUT", false, "Input text in a textbox", Category.UI, "element not found");
}
@Override
public ActionArgument[] getArguments() {
ActionArgument elemArgument = new ActionArgument("element", ArgumentType.STRING);
elemArgument.setValue(description);
ActionArgument valueArgument = new ActionArgument("value", ArgumentType.STRING);
valueArgument.setValue(value);
return new ActionArgument[]{elemArgument, valueArgument};
}
@Override
public void setValues(Object[] values) {
description = values[0].toString();
value = values[1].toString();
}
@Override
public String run(UiAutomatorTestCase uiAutomatorTestCase, Runtime runtime) {
// TODO use both content-description and text
//UiObject uiObject = new UiObject(new UiSelector().descriptionContains(description));
UiObject uiObject = new UiObject(new UiSelector().textContains(description));
try {
uiObject.setText(value);
} catch (UiObjectNotFoundException e) {
e.printStackTrace();
return e.getMessage();
}
return null;
}
}