首页 > 解决方案 > 获取错误 HTTP 状态:“404”->“未知方法”的 JSON 状态映射不正确(预期为 405)以使用带有 AndroidTouchAction 类的 Appium

问题描述

我在真实设备上使用 Appium 进行自动化移动 chrome 浏览器。我需要在 webelement 上滑动。我已经使用了下面的脚本

 AndroidTouchAction action = new AndroidTouchAction (driver);
        action.press(PointOption.point(00, 00)).moveTo(PointOption.point(100, 100)).release().perform();
        System.out.println("Test"); 

执行后我在eclipse中收到以下错误

信息:HTTP 状态:“404”->“未知方法”的 JSON 状态映射不正确(预期为 405)

所以刷卡操作没有完成。这里有什么问题?

以下是 Appium 日志

[W3C] 使用 args 调用 AppiumDriver.performTouch():[[{"action":"press","options":{"x":0,"y":0}},{"action":"moveTo" ,"options":{"x":100,"y":100}},{"action":"release","options":{}}],"a6425cfd-df0b-490e-a30c-a3ef8c5b3424"] [W3C] Encountered internal error running command: NotYetImplementedError: Method has not been implemented [W3C]
在 AndroidDriver.callee$0$0$ (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-android-driver\lib\commands\touch.js:136:11 ) [W3C] 在 tryCatch (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:67:40) [W3C] 在GeneratorFunctionPrototype.invoke [as _invoke] (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:315:22) [W3C]在 GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:100 :21) [W3C] 在调用时 (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:136:37) [W3C] 在 enqueueResult (C:\Users\chints\ AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:185:17) [W3C] at new Promise () [W3C] at new F (C:\ Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\core-js\library\modules\$.export.js:30:36) [W3C] 在 AsyncIterator.enqueue (C: \Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:184:12) [W3C] 在 AsyncIterator.prototype.(匿名函数) [接下来] (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:100:21) [W3C] 在 Object.runtime.async (C:\ Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:209:12) [W3C] 在 AndroidDriver.callee$0$0 [as performTouch] ( C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-android-driver\build\lib\commands\touch.js:375:30) [W3C] 在 C :\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\basedriver\driver.js:296:26 [W3C] at tryCatcher (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\node_modules\bluebird\js\main\util.js:26:23) [W3C] 在 Promise ._settlePromiseFromHandler (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\node_modules\bluebird\js\main\promise.js:510:31) [W3C] 在 Promise._settlePromiseAt (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\node_modules\bluebird\js\main\promise.js :584:18) [W3C] 在 Promise._settlePromiseAtPostResolution (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\node_modules\bluebird\js\ main\promise.js:248:10) [W3C] 在 Async._drainQueue (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\node_modules\bluebird\js\main\async.js:128:12) [W3C] 在异步._drainQueues (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\node_modules\bluebird\js\main\async.js:133:10) [W3C] 在 Immediate.Async.drainQueues [as _onImmediate] (C:\Users\chints\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\node_modules\bluebird\js \main\async.js:15:14) [W3C] at runCallback (timers.js:789:20) [W3C] at tryOnImmediate (timers.js:751:5) [W3C] at processImmediate [as _immediateCallback] (timers .js:722:5) [HTTP] <-- POST /wd/hub/session/a6425cfd-df0b-490e-a30c-a3ef8c5b3424/touch/perform 404 7 ms - 4202-- POST /wd/hub/session/a6425cfd-df0b-490e-a30c-a3ef8c5b3424/touch/perform 404 7 ms - 4202

标签: appiumappium-android

解决方案


首先确保您使用的是最新稳定版本的 Appium 服务器 1.9.1 和 Java 客户端 6.1.0。

现在刷卡时,不要从x: 0, y: 0.

尝试从x: 5, y: 5相反开始。

这应该可以工作,因为 Appium 在从设备边界开始时会导致问题。


推荐阅读