Appium tap(int x,int y)函数似乎已被弃用。任何替换?

时间:2018-03-01 11:33:18

标签: java appium

我试图自动化Android游戏,为此,我使用X,Y坐标进行按钮点击,因为游戏无法通过ID,Xpath等识别元素。我使用TouchAction tap(int x,int y)方法(Appium方法)来实现这一目的。但不幸的是,这个方法tap(int x,int y)似乎已被弃用。替换它的其他选项看起来是 - > touchAction.tap(PointOptions tapOptions)和touchAction.tap(TapOptions tapOptions)。 touchAction.press的情况也是如此。

我触摸特定按钮的代码如下所示:

TouchAction touchAction = new TouchAction(driver);
touchAction.tap(1280, 1013).perform();

此处,使用Android设备中的触摸点找到X,Y值[开发者选项>显示指针位置]

有人能建议使用非弃用方法实现相同的更好方法吗?谢谢!

3 个答案:

答案 0 :(得分:9)

您可以在此处查看TouchAction文档:

https://appium.github.io/java-client/io/appium/java_client/TouchAction.html

以下是替换您正在使用的tap()的方法:

https://appium.github.io/java-client/io/appium/java_client/TouchAction.html#tap-io.appium.java_client.touch.offset.PointOption-

这里是PointOption文档,它是与tap()一起使用的新参数:

https://appium.github.io/java-client/io/appium/java_client/touch/offset/PointOption.html

所以为了回答你的问题,你有两个选择PointOption:

  1. 使用PointOption.point(x,y),它是具有这些坐标值的PointOption的静态实例
  2. TouchAction touchAction = new TouchAction(driver);
    touchAction.tap(PointOption.point(1280, 1013)).perform()

    1. 使用PointOption()。withCoordinates(x,y),在设置这些坐标值后返回对PointOption实例的引用
    2. TouchAction touchAction = new TouchAction(driver);
      touchAction.tap(new PointOption().withCoordinates(1280, 1013)).perform()

答案 1 :(得分:0)

不推荐的点击/按下功能的替代方法是'longPress'功能。这是功能:

public T longPress(LongPressOptions longPressOptions) {
    ActionParameter action = new ActionParameter("longPress", longPressOptions);
    parameterBuilder.add(action);
    //noinspection unchecked
    return (T) this;
}

有关详细信息,请参阅:https://github.com/appium/java-client/blob/master/src/main/java/io/appium/java_client/TouchAction.java

答案 2 :(得分:0)

由于更新后引入了不同的选项,因此将为您工作


new TouchAction(driver).tap(PointOption.point(x,y)).waitAction(waitOptions(Duration.ofMillis(duration))).moveTo(PointOption.point(x, y)).release().perform();

    }