するめごはんのIT日記

主にITネタを書いていくのさ

AppiumでAndroidのアプリをスワイプさせようと思ったら罠を踏んだ話

ごきげんよう

Appiumを使ってAndroidのアプリをスワイプさせようと思ったら罠を踏みました。

AndroidDriverでswipeがなくなった?っぽかったので
「TouchActionで押しながらずらすかー」
と思ったら動きませんでした。

環境

動くかなって思ったコード

右から左にスワイプさせたかった。

AndroidDriver driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
TouchAction act = new TouchAction(driver);
act.press(950,950).moveTo(90,950).release().perform();

こんな感じに怒られた

InvalidCoordinatesException とのこと。

org.openqa.selenium.interactions.InvalidCoordinatesException: The coordinates provided to an interactions operation are invalid.

こうしたら動いた

JavascriptExecutorで対応しようかと思ったんだけど、ちょっとした工夫で動いてくれた。

press()で座標指定して画面を押した後に waitAction()を呼んでから moveToで座標を移動させる。 これでゆっくりだが右から左にスワイプしてくれる。

AndroidDriver driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
TouchAction act = new TouchAction(driver);
act.press(950,950).waitAction().moveTo(90,950).release().perform();

issueあがってました

github.com

こんなこともあるある。