2015-12-21 206 views
2

我想在本機iOS應用程序中自動化長按觸摸操作。iOS + appium java客戶端:長按TouchAction不起作用?

方法1:模擬長按在左上角沒有工作。

new TouchAction(driver).longPress(0,0).perform() Appium日誌沒有顯示錯誤:

info: [debug] [INST] 2015-12-21 17:41:19 +0000 Debug: Got new command 5 from instruments: target.touch([{"touch":[{"x":0,"y":0}],"time":0.2}]) 
info: [debug] [INST] 2015-12-21 17:41:19 +0000 Debug: evaluating target.touch([{"touch":[{"x":0,"y":0}],"time":0.2}]) 
info: [debug] [INST] 2015-12-21 17:41:19 +0000 Debug: target.touch(__NSCFArray) 
info: [debug] [INST] 2015-12-21 17:41:20 +0000 Debug: evaluation finished 
info: [debug] [INST] 2015-12-21 17:41:20 +0000 Debug: responding with: 
info: [debug] [INST] 2015-12-21 17:41:20 +0000 Debug: Running system command #6: /usr/local/Cellar/node/4.1.1/bin/node /usr/local/lib/node_modules/appium/node_modules/appium-uiauto/bin/command-proxy-client.js /tmp/instruments_sock 2,{"status":0,"value":""}... 
info: [debug] Socket data received (25 bytes) 
info: [debug] Socket data being routed. 
info: [debug] Got result from instruments: {"status":0,"value":""} 
info: [debug] Responding to client with success: {"status":0,"value":"","sessionId":"332523ee-5a1b-427a-8beb-3c150587d08b"} 

方法2:執行JavaScript來模擬長按

((IOSDriver)driver).executeScript("mobile: longClick", ImmutableMap.of("x", 5, "y", 5));

Appium日誌例外如下:

TypeError: cb is not a function 
    at [object Object].iOSController.touchLongClick (/usr/local/lib/node_modules/appium/lib/devices/ios/ios-controller.js:614:3) 
    at Object.exports.touchLongClick [as longClick] (/usr/local/lib/node_modules/appium/lib/server/controller.js:371:16) 
    at Object.exports.executeMobileMethod (/usr/local/lib/node_modules/appium/lib/server/controller.js:984:22) 
    at exports.execute (/usr/local/lib/node_modules/appium/lib/server/controller.js:940:15) 
    at Layer.handle [as handle_request] (/usr/local/lib/node_modules/appium/node_modules/express/lib/router/layer.js:82:5) 

回答

0

new TouchAction(driver).longPress(0,0).perform()更改爲

TouchAction action = new TouchAction(driver).longPress(0,0).release(); 

action.perform(); 

確保您擁有正確的座標。

1

您必須將2個參數傳遞給longPress()方法。它們是你想要保存的元素(下面的代碼中的元素)和時間(2000毫秒)它需要保存多少時間。

MobileElement element = driver.findElementByClassName("xxx"); 
new TouchAction(driver).longPress(element, 2000).perform(); 
相關問題