使用 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 进行自动化测试的主要内容,如果未能解决你的问题,请参考以下文章