Appium tap(int x, int y)函数似乎已被弃用。有替代方法吗?

5
我正在尝试自动化一个Android游戏,为此我使用X,Y坐标来进行按钮点击,因为通过ID、XPath等方式无法识别游戏中的元素。我使用TouchAction tap(int x, int y)方法(Appium Method)来实现这一点。但不幸的是,该方法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个回答

17
您可以在此处查看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的静态实例
``` TouchAction touchAction = new TouchAction(driver); touchAction.tap(PointOption.point(1280, 1013)).perform() ```
2. 使用PointOption().withCoordinates(x, y),它在设置这些坐标值后返回对PointOption实例的引用
``` TouchAction touchAction = new TouchAction(driver); touchAction.tap(new PointOption().withCoordinates(1280, 1013)).perform() ```

我在第一个选项中遇到了一个错误,提示“方法尚未实现”,这可能是什么原因? - Chintamani Manjare
解决了我的问题 - Ahtisham Ilyas
我即使使用上述代码仍然遇到相同的错误。使用PointOption.point(x, y),这是一个具有这些坐标值的静态PointOption实例。 - Sandeep Duve
我即使使用上述代码也遇到了相同的错误。使用PointOption.point(x, y),这是一个具有这些坐标值的PointOption的静态实例。 - undefined

0

由于更新后引入了不同的选项,这将对您起作用。


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

    }


-1

那么,在这个函数中,我应该在哪里传递X、Y坐标?(LongPressOptions longPressOptions)接受哪些参数?还有另一个tap函数,根据我从Eclipse中读到的信息,它并没有被弃用[touchAction.tap(PointOptions tapOptions)和touchAction.tap(TapOptions tapOptions)],但我不知道需要传递什么参数。 - Sandeep Harisankar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接