使用 XCUI 在 iOS 模拟器上使用 NightwatchJS 进行自动化测试

Automation test with NightwatchJS on iOS simulator using XCUI

我尝试使用 NightWatchJS 对“单击和拖动”行为进行自动化 UI 测试,并在 Android 虚拟设备上成功执行了它。但是,当我尝试使用命令 .mouseButtonDown() 在 IOS 模拟器(iPhone 12 Pro max,14.5)上启动测试时 它显示“未处理的端点”错误

Appium日志如下:

[WD Proxy] Matched '/wd/hub/session/d033457a-e51c-4195-9d57-36976f50508a/buttondown' to command name 'buttonDown'
[WD Proxy] Proxying [POST /wd/hub/session/d033457a-e51c-4195-9d57-36976f50508a/buttondown] to [POST http://127.0.0.1:8100/session/680ECC16-09F1-472D-8D31-1C032771CC88/buttondown] with body: {"button":0}
[WD Proxy] Got response with status 404: 
{"value":
      {"error":"unknown command",
       "message":"Unhandled endpoint: /session/680ECC16-09F1-472D-8D31 1C032771CC88/buttondown 
-- http://127.0.0.1:8100/ with parameters {\n    wildcards = (\n  
      \"session/680ECC16-09F1-472D-8D31-1C032771CC88/buttondown\"\n    );\n}",
       "traceback":""},
       "sessionId":"680ECC16-09F1-472D-8D31-1C032771CC88"}
[debug] [W3C] Matched W3C error code 'unknown command' to UnknownCommandError
[HTTP] <-- POST /wd/hub/session/d033457a-e51c-4195-9d57-36976f50508a/buttondown 500 3 ms - 309

这是测试的配置:

ios : {
    desiredCapabilities :{
        automationName: "XCUITest",
        browserName : "safari",
        platformName : "iOS",
        platformVersion : "14.5",
        deviceName : "iPhone 12 Pro Max",
        real_mobile : false,
        connectHardwareKeyboard: false
}

我想知道在 iOS 模拟器上是否有任何方法可以解决这个问题?

出现这个问题的原因是Apple的XCTest测试驱动的框架与用于Android虚拟设备的测试驱动不同,它本身不支持W3C标准的TouchAction接口实现。所以我们在 NighwatchJS 官方文档中找到的一些命令可能无法正常工作。 出于这个原因,我们可以使用 XCtest 驱动程序附带的手势集(所有手势的列表 here )。 要将手势应用于 Nightwatch 测试,请使用 browser.execute('mobile: gesture', {arguments})