XCTestWD 踩坑 source clear

前段时间发现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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值