wda.Client.sceenshoot()代码分析

当执行这个函数都进行了什么操作:
1. 在手机截屏
2. 写入项目目录对应文件名(png)
3. 并返回一个截屏图片的十六进制字节串

    def screenshot(self, png_filename=None):
        """
        Screenshot with PNG format【PNG格式的截屏】
        Args:png_filename(string): optional, save file name【传入一个图片名称的参数】
        Returns:png raw data【返回png原始数据】
        Raises:WDAError
        """
        value = self.http.get('screenshot').value
        # 是一个base64编码的数据
        # 上面相当于value = HTTPClient('http://localhost:8100').get('screenshot').value get方法找不到 todo
        raw_value = base64.b64decode(value)
        # 通过base64解码得到原始数据
        png_header = b"\x89PNG\r\n\x1a\n"
        # 以字节串b’\x89PNG\r\n\x1a\n’开头表示是png格式,可移植网络图形格式(Portable Network Graphic Format)

        if not raw_value.startswith(png_header):
            # 图片的raw_value必须是以png_header开头,即必须是png格式,否则会报错
            raise WDAError(-1, "screenshot png format error")
            # 报错形式:wda.WDAError: WDAError(status=-1, value=screenshot png format error)

        if png_filename:
            with open(png_filename, 'wb') as f:
                f.write(raw_value)
                # 在执行函数的过程中,将截屏数据存到目录中对应图片名称(传的参)

        # raw_value:b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x02\xee\x00...
        return raw_value  # 返回一个png原始截屏数据

你可能感兴趣的:(wda.Client.sceenshoot()代码分析)