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();
ここで、X、Y値は、Androidデバイス[開発者向けオプション>ポインターの位置を表示]のタッチポイントを使用して検出されます。
誰かが非推奨されていない方法を使用して同じことを達成するより良い方法を提案できますか?ありがとう!
ここで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で2つの選択肢があります。
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()
更新後にさまざまなオプションが導入されるため、これはあなたのために機能します
new TouchAction(driver).tap(PointOption.point(x,y)).waitAction(waitOptions(Duration.ofMillis(duration))).moveTo(PointOption.point(x, y)).release().perform();
}
非推奨のタップ/プレス機能の代わりに、「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