<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Drag ~~~ package io.appium.android.bootstrap.handler; import com.android.uiautomator.core.UiDevice; import com.android.uiautomator.core.UiObjectNotFoundException; import io.appium.android.bootstrap.*; import io.appium.android.bootstrap.exceptions.InvalidCoordinatesException; import io.appium.android.bootstrap.utils.Point; import org.json.JSONException; import org.json.JSONObject; import java.util.Hashtable; /** * This handler is used to drag in the Android UI. * */ public class Drag 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) */ private static class DragArguments { public AndroidElement el; public AndroidElement destEl; public final Point start; public final Point end; public final Integer steps; public DragArguments(final AndroidCommand command) throws JSONException { final Hashtable<String, Object> params = command.params(); try { if (params.get("elementId") != JSONObject.NULL) { el = command.getElement(); } } catch (final Exception e) { el = null; } try { if (params.get("destElId") != JSONObject.NULL) { destEl = command.getDestElement(); } } catch (final Exception e) { destEl = null; } start = new Point(params.get("startX"), params.get("startY")); end = new Point(params.get("endX"), params.get("endY")); steps = (Integer) params.get("steps"); } } private AndroidCommandResult drag(final DragArguments dragArgs) { Point absStartPos = new Point(); Point absEndPos = new Point(); final UiDevice device = UiDevice.getInstance(); try { absStartPos = getDeviceAbsPos(dragArgs.start); absEndPos = getDeviceAbsPos(dragArgs.end); } catch (final InvalidCoordinatesException e) { return getErrorResult(e.getMessage()); } Logger.debug("Dragging from " + absStartPos.toString() + " to " + absEndPos.toString() + " with steps: " + dragArgs.steps.toString()); final boolean rv = device.drag(absStartPos.x.intValue(), absStartPos.y.intValue(), absEndPos.x.intValue(), absEndPos.y.intValue(), dragArgs.steps); if (!rv) { return getErrorResult("Drag did not complete successfully"); } return getSuccessResult(rv); } private AndroidCommandResult dragElement(final DragArguments dragArgs) { Point absEndPos = new Point(); if (dragArgs.destEl == null) { try { absEndPos = getDeviceAbsPos(dragArgs.end); } catch (final InvalidCoordinatesException e) { return getErrorResult(e.getMessage()); } Logger.debug("Dragging the element with id " + dragArgs.el.getId() + " to " + absEndPos.toString() + " with steps: " + dragArgs.steps.toString()); try { final boolean rv = dragArgs.el.dragTo(absEndPos.x.intValue(), absEndPos.y.intValue(), dragArgs.steps); if (!rv) { return getErrorResult("Drag did not complete successfully"); } else { return getSuccessResult(rv); } } catch (final UiObjectNotFoundException e) { return getErrorResult("Drag did not complete successfully" + e.getMessage()); } } else { Logger.debug("Dragging the element with id " + dragArgs.el.getId() + " to destination element with id " + dragArgs.destEl.getId() + " with steps: " + dragArgs.steps); try { final boolean rv = dragArgs.el.dragTo(dragArgs.destEl.getUiObject(), dragArgs.steps); if (!rv) { return getErrorResult("Drag did not complete successfully"); } else { return getSuccessResult(rv); } } catch (final UiObjectNotFoundException e) { return getErrorResult("Drag did not complete successfully" + e.getMessage()); } } } @Override public AndroidCommandResult execute(final AndroidCommand command) throws JSONException { // DragArguments is created on each execute which prevents leaking state // across executions. final DragArguments dragArgs = new DragArguments(command); if (command.isElementCommand()) { return dragElement(dragArgs); } else { return drag(dragArgs); } } } ~~~ 首先來看DragArguments對象。該類為Drag中的私有類,它的構造方法回去解析傳入的command,然后獲得并存儲一些drag方法用到的參數。例如拖拽控件時,被拖拽的控件對象,拖拽到的控件對象。坐標拖拽時,起始點坐標、終點坐標、步驟。所以就把它看成一個實體類就行了。然后分控件和坐標分別調用dragElement()和drag()方法。 ## dragElement() 如果拖拽到的控件不存在,那么就要用到結束坐標。如果拖拽到的控件存在,那么就用該控件計算拖拽到坐標,調用UiObject.dragTo()方法來執行命令。 ## drag() 這個就好辦了,都是坐標值,直接調用UiObject.dragTo來執行。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看