appium源码分析(十一)-getSize,getLocation

来源:互联网 发布:网络证据保全公证 编辑:程序博客网 时间:2024/05/16 06:48

摘要

为什么需要将这两个放到一块儿来讲呢,因为他们两实际上都是依靠UiAutomator的Bounds属性值的,并且如果说我需要获取到元素的中点坐标的话,我就需要依赖这两个方法才能够解决

正文

好的 我们先来看看geiSize吧,从字面的意思就是获取到它的大小,即元素的宽高了。

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.");    }  }

现在看这些代码实际上都很简单了,还是一样 获取到AndroidElement的元素
再来获取到bounds。这个是Rect的类型。再来分别将其的长宽分别放到一个JsonObject对象里面。将该对象返回

下来看看getLocation

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());    }  }

这里是将Bounds的坐顶点的X坐标以及Y坐标分别赋值到JsonObject的x,y上

所以如果说你想要获取到某个元素在屏幕的中点坐标的话,你就需要这两个方法的帮助了。

 element = self.find_element(loc) startX = int(element.location['x']) startY = int(element.location['y']) endX = int(element.size['width'])+startX endY = int(element.size['height'])+startY centerX = (startX+endX)/2 centerY = (startY+endY)/2

以上就能够获取到元素中点的坐标了。

0 0
原创粉丝点击