前段时间发现 XCTestWD 的获取页面 xml 结构要比 facebook 的 WebDriverAgent 快很多果断选择开始研究 XCTestWD
然后,你们懂得,就遇到了很多问题特此贴出来跟大家分享分享:
1.我想获取一个 xml 格式的页面 source,不好意思没有对应的接口,怎么办呢?我的解决办法是:
在 XCTestWDXPath 再添加一个方法 findXmlForm
static func findXmlForm(_ root:XCElementSnapshot) -> String {
var mapping = [String:XCElementSnapshot]()
let documentXml = generateXMLPresentation(root,
nil,
nil,
defaultTopDir,
&mapping)?.xml
if documentXml == nil {
return ""
}
return documentXml!
}
这样就能获得 xml 类型的 source 然后你再通过 rest 传出来跟 json 类型的一样
2.我想调用 delSession 这里就会遇到两个坑
a.request.session?.application 是 nil 呀老哥们 没办法自己动手 let session = request.params[":sessionId"]! 这样就可以去到 session 了
b.解决了上面的问题你就会发现应用虽然关掉了但是 XCTestWD 挂了没办法我只能把 deleteSession 这个方法里面的
NotificationCenter.default.post(name: NSNotification.Name(XCTestWDSessionShutDown), object: nil) 这段注销掉就好了
3.我在查找元素的时候发现元素 ID 是中文悲剧的发现在服务端是?????乱码 好吧这个问题已经提给 GITHUB 了
我的解决办法是:
let text:String = firstNonEmptyValue(element?.wdValue() as? String, element?.wdLabel()) ?? ""
let l = text.characters.count
var typeString = ""
for _ in 1...l {
typeString=typeString + "\u{8}"
}
element?.typeText(typeString)
4.Clear 文本框也是有问题的,解决办法如下:
把 element?.typeText(“”) 改成如下即可
这个问题已经修复
5.关于会生成两个应用的问题,下载最新版的 XCTestWD 然后只 build XCTestWDUITests 即可 只会生成一个
照例 @ 两位大神
@xdf @zhangzhao_lenovo