GetName & amp; GetAttribute & amp; GetDeviceSize & amp; GetSize & amp; GetLocation & amp; GetDataDir, bootstrapgetname

Source: Internet
Author: User
Tags appium

GetName & GetAttribute & GetDeviceSize & GetSize & GetLocation & GetDataDir, bootstrapgetname
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 ()


Tomcat running error (Bootstrapjava: 414), (Bootstrapjava: 289) servicegetName (): "Catalina"; Protoco

Port occupied
 
Mixed Use of bootstrap and jquery is problematic.

...... Of course not. The js plug-in of bootstrap must be imported to jq for execution.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.