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

Posted

技术标签:

【中文标题】使用 XCUI 在 iOS 模拟器上使用 NightwatchJS 进行自动化测试【英文标题】:Automation test with NightwatchJS on iOS simulator using XCUI 【发布时间】:2021-12-30 10:57:18 【问题描述】:

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

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 模拟器上解决这个问题?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于使用 XCUI 在 iOS 模拟器上使用 NightwatchJS 进行自动化测试的主要内容,如果未能解决你的问题,请参考以下文章

在真实设备上的 XCUI 测试中检测暗模式

使用 XCUI 测试用例测试 UICollectionView 无限滚动

如何在 XCUI 测试自动化框架中组织和分组测试用例

一起使用 XCUI 测试和 XC 测试

使用 XCUI 进行 UI 测试

在 XCUI TestCase 期间最后停止在 UITableView 上滚动