我试图自动化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值[开发者选项>显示指针位置]
有人能建议使用非弃用方法实现相同的更好方法吗?谢谢!
答案 0 :(得分:9)
您可以在此处查看TouchAction文档:
https://appium.github.io/java-client/io/appium/java_client/TouchAction.html
以下是替换您正在使用的tap()的方法:
这里是PointOption文档,它是与tap()一起使用的新参数:
https://appium.github.io/java-client/io/appium/java_client/touch/offset/PointOption.html
所以为了回答你的问题,你有两个选择PointOption:
TouchAction touchAction = new TouchAction(driver);
touchAction.tap(PointOption.point(1280, 1013)).perform()
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;
}
答案 2 :(得分:0)
由于更新后引入了不同的选项,因此将为您工作
new TouchAction(driver).tap(PointOption.point(x,y)).waitAction(waitOptions(Duration.ofMillis(duration))).moveTo(PointOption.point(x, y)).release().perform();
}