iPhone终端安装好WDA的标志是,在Xcode中点击Product-Test之后,Console窗口(View-Debug Area-Activate Console可以打开)会出现一串IP地址,比如下图中的IP地址就是:IP = http://169.254.13.135:8100




大家可以在浏览器里面直接敲入地址查看情况,其中有一些常见的后缀:

1. IP + /status/ :可以查看会话连接的状态(status为0时为正常连接),以及会话ID(sessionId)。

2. IP + /screenshot/:浏览器显示的是这一瞬间的截图数据,在value键对应的内容里。

3. IP + /inspector/:浏览器显示的是手机的实时图像,手机内各个元素对象的树,以及点击每一个元素时该元素的详细信息。


用swift来获取截图并显示出来:

基于2中的IP地址,用swift来获取这个地址中的字典元素,然后把value键的内容读取出来,再经过String类型转换得到最终图像,话不多说,上代码:

catchPic() 函数:获取截图

@objc func catchPic() {

        let path =self.ip +"screenshot"

        let url: URL = NSURL(string: path)as!URL

        var string:String =""

        do {

            string = tryNSString(contentsOf: url, encoding:String.Encoding.utf8.rawValue)asString }

        catch let error as NSError {

            print("error in getting data:\(error.description)")

        }

        let dic: [String:AnyObject] =self.ConvertString2Dictionary(text: string)!

        let image:UIImage? =self.ConvertString2Image(text: dic["value"]as!String)

    }


其中有两个子函数:

(1)将String转Dictionary:

func ConvertString2Dictionary(text:String) -> [String:AnyObject]? {

        if let data = text.data(using: String.Encoding.utf8) {

            do {

                returntryJSONSerialization.jsonObject(with: data, options:JSONSerialization.ReadingOptions.init(rawValue:0))as! [String:AnyObject] }

            catchlet errorasNSError {

                print("transvert error:\(error.description)")

            }

        }

        return nil

    }

(2)将String转UIImage

func ConvertString2Image(text:String) ->UIImage? {

        if let data = NSData.init(base64Encoded: text, options:NSData.Base64DecodingOptions.ignoreUnknownCharacters) {

            let image:UIImage? =UIImage.init(data: dataasData)

            return image

        }

        return nil

    }



Logo

Agent 垂直技术社区,欢迎活跃、内容共建,欢迎商务合作。wx: diudiu5555

更多推荐