概述
前段时间发现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了
下面给大家说下我的解决办法:
a.把传给xctestwd的报文转换成byte json.getString("value").getBytes()
b.在xctestwd端 解析出来即可
var data:[UInt8] = UInt8
let splitedarray = value?.components(separatedBy: ",").flatMap{ Int($0)}
var i = 0
for item in splitedarray! {
data.insert(UInt8(item),at:i)
i = i+1
}
let st = String(data: NSData(bytes: data, length: data.count) as Data, encoding: String.Encoding.utf8)
第二种解决办法:
发送post请求的时候 对data做处理
StringEntity stringentity =new StringEntity(json.toString(),"utf-8");
4.Clear文本框也是有问题的,解决办法如下:
把element?.typeText("")改成如下即可官方也已经修复
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)
5.关于会生成两个应用的问题,下载最新版的XCTestWD 然后只build XCTestWDUITests即可 不用test XCTestWD
最后
以上就是正直香菇为你收集整理的XCTestWD 踩坑 source clear的全部内容,希望文章能够帮你解决XCTestWD 踩坑 source clear所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复