WDA 都这么好用了,为什么都还在芝芝不倦的用 Appium 里的 UIAutomation 呀
我也是这样认为的。其实从 XCUITesting 出来之后,UIAutomation 就面临退休的境遇,不过 XCUITesting 的声音也不够响亮,反倒是 WDA 出来后,引得一致好评,苹果的自动化测试工具的宿命就是那么悲惨
作为移动端 UI 自动化测试霸主的 Appium,其实一早就把 WDA 纳入了它的麾下。看 appium-xcuitest-driver 就知道了。我估计等 ios 10 发布,WDA 就会成为 Appium 的标配吧。
+ if (caps.platformVersion) {
+ let majorVer = caps.platformVersion.toString().split(".")[0];
+ if (majorVer >= 10) {
+ log.info("Requested iOS support with version >= 10, using XCUITest " +
+ "driver instead of UIAutomation-based driver, since the " +
+ "latter is unsupported on iOS 10 and up.");
+ return XCUITestDriver;
+ }
+ }
但是目前来看,似乎在 Appium 里面使用 WDA 的人不多,看官方也没有怎么使用的文档,只能从代码里一窥。
// we don't necessarily have an `automationName` capability,
if (caps.automationName) {
if (caps.automationName.toLowerCase() === 'selendroid') {
// but if we do and it is 'Selendroid', act on it
return SelendroidDriver;
} else if (caps.automationName.toLowerCase() === 'xcuitest') {
// but if we do and it is 'XCUITest', act on it
return XCUITestDriver;
} else if (caps.automationName.toLowerCase() === 'youiengine') {
// but if we do and it is 'YouiEngine', act on it
return YouiEngineDriver;
}
}
所以你现在想用下 WDA,可以把 automationName
设置为 XCUITest
。 这样就可以使用 XCUITestDriver 了。
原理很简单:只要看看 appium/node_modules/appium-xcuitest-driver/lib/webdriveragent.js
这个 js 文件就知道了。大致如下:
xcodebuild -project WebDriverAgent.xcodeproj \
-scheme WebDriverAgentRunner \
-destination 'platform=iOS Simulator,name=iPhone 6' \
test
之后,还是和以前一样,客户端命令传过来,直接 proxy 进 WDA 的服务器即可。目前很多 API 还不是很好用。希望官方出一个指导意见。不过好像 @chenhengjie123 哥哥自己搞了一套 WDA 的封装,可以让他分享下。另外, @xdf 的 macaca 也已经集成了 WDA, @codeskyblue 的 atx 也支持 WDA,大家都可以试试。