Appium + Protractor で iOS に対してタッチやスワイプ等の動作を行うには
Appium + Protractor で iOS に対して E2E テストをしていて、要素のクリックなどではなく、指を置いて縦横に滑らすスワイプ操作を再現する必要が出てきた。そのやり方を調べたので紹介。
まず、予め protractor.conf.js
に以下のようにしてグローバル変数を作っておく。
// グローバルに wd (WebDriver) を置いておく
global._wd = require('wd');
// …中略…
onPrepare: () => {
// その他の処理は省略
// グローバルに __blowser を置いておく
browser.driver.manage().driver_.getSession()
.then((obj) => {
global.__session_id = obj.id_;
global.__browser = global._wd.promiseChainRemote({
host: 'localhost',
port: 4723
});
global.__browser.attach(global.__session_id);
});
そしてテストコード側は以下のような感じで書く。
// スワイプ操作前のなにか Promise な処理
something()
.then(() => {
// ココでは下から上にスワイプする操作を行う
return new global._wd.TouchAction(global.__browser)
.press({ x: 100, y: 100 })
.moveTo({ x: 1, y: -100 })
.release()
.perform();
})
.then(() => {
// スワイプ操作後の処理…
});
とりあえずこんな感じで画面をスワイプさせることができた。Action 回りはよく分かんないです;;