Getname
package io.appium.android.bootstrap.handler;import com.android.uiautomator.core.UiObjectNotFoundException;import io.appium.android.bootstrap.*;import org.json.JSONException;/** * This handler is used to get the text of elements that support it. * */public class GetName extends CommandHandler { /* * @param command The {@link AndroidCommand} used for this handler. * * @return {@link AndroidCommandResult} * * @throws JSONException * * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android. * bootstrap.AndroidCommand) */ @Override public AndroidCommandResult execute(final AndroidCommand command) throws JSONException { if (!command.isElementCommand()) { return getErrorResult("Unable to get name without an element."); } try { final AndroidElement el = command.getElement(); return getSuccessResult(el.getContentDesc()); } catch (final UiObjectNotFoundException e) { return new AndroidCommandResult(WDStatus.NO_SUCH_ELEMENT, e.getMessage()); } catch (final Exception e) { // handle NullPointerException return getErrorResult("Unknown error"); } }}
Finally, the uiobject. getcontentdescription () method is called to obtain the description of the control.
Getattribute
package io.appium.android.bootstrap.handler;import com.android.uiautomator.core.UiObjectNotFoundException;import io.appium.android.bootstrap.*;import io.appium.android.bootstrap.exceptions.NoAttributeFoundException;import org.json.JSONException;import java.util.Hashtable;/** * This handler is used to get an attribute of an element. * */public class GetAttribute extends CommandHandler { /* * @param command The {@link AndroidCommand} used for this handler. * * @return {@link AndroidCommandResult} * * @throws JSONException * * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android. * bootstrap.AndroidCommand) */ @Override public AndroidCommandResult execute(final AndroidCommand command) throws JSONException { if (command.isElementCommand()) { // only makes sense on an element final Hashtable<String, Object> params = command.params(); try { final AndroidElement el = command.getElement(); final String attr = params.get("attribute").toString(); if (attr.equals("name") || attr.equals("text") || attr.equals("className")) { return getSuccessResult(el.getStringAttribute(attr)); } else { return getSuccessResult(String.valueOf(el.getBoolAttribute(attr))); } } catch (final NoAttributeFoundException e) { return new AndroidCommandResult(WDStatus.NO_SUCH_ELEMENT, e.getMessage()); } catch (final UiObjectNotFoundException e) { return new AndroidCommandResult(WDStatus.NO_SUCH_ELEMENT, e.getMessage()); } catch (final Exception e) { // el is null return new AndroidCommandResult(WDStatus.NO_SUCH_ELEMENT, e.getMessage()); } } else { return getErrorResult("Unable to get attribute without an element."); } }}
This event is set for obtaining control-related information to see which information can be obtained, which is actually the information in uiautomatorviewer.
public String getStringAttribute(final String attr) throws UiObjectNotFoundException, NoAttributeFoundException { String res; if (attr.equals("name")) { res = getContentDesc(); if (res.equals("")) { res = getText(); } } else if (attr.equals("text")) { res = getText(); } else if (attr.equals("className")) { res = getClassName(); } else { throw new NoAttributeFoundException(attr); } return res; }
Text Value: Content-Desc, text, classname.
public boolean getBoolAttribute(final String attr) throws UiObjectNotFoundException, NoAttributeFoundException { boolean res; if (attr.equals("enabled")) { res = el.isEnabled(); } else if (attr.equals("checkable")) { res = el.isCheckable(); } else if (attr.equals("checked")) { res = el.isChecked(); } else if (attr.equals("clickable")) { res = el.isClickable(); } else if (attr.equals("focusable")) { res = el.isFocusable(); } else if (attr.equals("focused")) { res = el.isFocused(); } else if (attr.equals("longClickable")) { res = el.isLongClickable(); } else if (attr.equals("scrollable")) { res = el.isScrollable(); } else if (attr.equals("selected")) { res = el.isSelected(); } else if (attr.equals("displayed")) { res = el.exists(); } else { throw new NoAttributeFoundException(attr); } return res; }
Boolean Type value: as shown above.
Getdevicesize
package io.appium.android.bootstrap.handler;import com.android.uiautomator.core.UiDevice;import io.appium.android.bootstrap.AndroidCommand;import io.appium.android.bootstrap.AndroidCommandResult;import io.appium.android.bootstrap.CommandHandler;import org.json.JSONException;import org.json.JSONObject;/** * This handler is used to get the size of the screen. * */public class GetDeviceSize extends CommandHandler { /* * @param command The {@link AndroidCommand} used for this handler. * * @return {@link AndroidCommandResult} * * @throws JSONException * * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android. * bootstrap.AndroidCommand) */ @Override public AndroidCommandResult execute(final AndroidCommand command) { if (!command.isElementCommand()) { // only makes sense on a device final UiDevice d = UiDevice.getInstance(); final JSONObject res = new JSONObject(); try { res.put("height", d.getDisplayHeight()); res.put("width", d.getDisplayWidth()); } catch (final JSONException e) { getErrorResult("Error serializing height/width data into JSON"); } return getSuccessResult(res); } else { return getErrorResult("Unable to get device size on an element."); } }}
Obtain the screen length and width. Call the uidevice method: getdisplayheight () and getdisplaywidth ()
Getsize
package io.appium.android.bootstrap.handler;import android.graphics.Rect;import com.android.uiautomator.core.UiObjectNotFoundException;import io.appium.android.bootstrap.*;import org.json.JSONException;import org.json.JSONObject;/** * This handler is used to get the size of elements that support it. * */public class GetSize extends CommandHandler { /* * @param command The {@link AndroidCommand} used for this handler. * * @return {@link AndroidCommandResult} * * @throws JSONException * * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android. * bootstrap.AndroidCommand) */ @Override public AndroidCommandResult execute(final AndroidCommand command) throws JSONException { if (command.isElementCommand()) { // Only makes sense on an element final JSONObject res = new JSONObject(); try { final AndroidElement el = command.getElement(); final Rect rect = el.getBounds(); res.put("width", rect.width()); res.put("height", rect.height()); } catch (final UiObjectNotFoundException e) { return new AndroidCommandResult(WDStatus.NO_SUCH_ELEMENT, e.getMessage()); } catch (final Exception e) { // handle NullPointerException return getErrorResult("Unknown error"); } return getSuccessResult(res); } else { return getErrorResult("Unable to get text without an element."); } }}
Obtain the width and height of the Control. getbounds () of the uiobject is called (). Obtain a rectangle, and then obtain its width and height.
Getlocation
package io.appium.android.bootstrap.handler;import android.graphics.Rect;import io.appium.android.bootstrap.*;import org.json.JSONException;import org.json.JSONObject;/** * This handler is used to get the text of elements that support it. * */public class GetLocation extends CommandHandler { /* * @param command The {@link AndroidCommand} used for this handler. * * @return {@link AndroidCommandResult} * * @throws JSONException * * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android. * bootstrap.AndroidCommand) */ @Override public AndroidCommandResult execute(final AndroidCommand command) throws JSONException { if (!command.isElementCommand()) { return getErrorResult("Unable to get location without an element."); } try { final JSONObject res = new JSONObject(); final AndroidElement el = command.getElement(); final Rect bounds = el.getBounds(); res.put("x", bounds.left); res.put("y", bounds.top); return getSuccessResult(res); } catch (final Exception e) { return new AndroidCommandResult(WDStatus.NO_SUCH_ELEMENT, e.getMessage()); } }}
Obtains the Starting Point Coordinate of a widget. Call getbounds and obtain the X and Y coordinates of the start point.
Getdatadir
package io.appium.android.bootstrap.handler;import android.os.Environment;import io.appium.android.bootstrap.AndroidCommand;import io.appium.android.bootstrap.AndroidCommandResult;import io.appium.android.bootstrap.CommandHandler;/** * This handler is used to get the data dir. * */public class GetDataDir extends CommandHandler { /* * @param command The {@link AndroidCommand} used for this handler. * * @return {@link AndroidCommandResult} * * @throws JSONException * * @see io.appium.android.bootstrap.CommandHandler#execute(io.appium.android. * bootstrap.AndroidCommand) */ @Override public AndroidCommandResult execute(final AndroidCommand command) { return getSuccessResult(Environment.getDataDirectory()); }}
Obtain the root directory of data. The android API is called: environment. getdatadirectory ()
Getname & getattribute & getdevicesize & getsize & getlocation & getdatadir for bootstrap