Selenium get_screenshot_as_file与get_screenshot_as_base64有什么区别?

0 投票
1 回答
3758 浏览
提问于 2025-04-18 19:31

我在想,这两种方法各自有什么优缺点呢?

我在一个没有界面的远程实例上运行Selenium服务器,Xvfb充当显示器。

这两种方法都能正常工作,生成的屏幕截图文件(如果我把base64格式的转换成图片文件)大小和外观都是一样的。

那么,我为什么要选择一种而不选择另一种呢?

1 个回答

3

使用get_screenshot_as_file时,截图会保存为一个二进制文件,而使用get_screenshot_as_base64则会返回这个截图的base64编码版本。

那么,为什么有人会选择使用base64版本呢?base64的主要作用是把二进制数据转换成ASCII格式的表示,这样虽然会增加数据的大小,但也让我们可以更方便地处理这些数据。举个例子,如果你试图把一串二进制数据发送到一个套接字(socket),如果不进行编码,除非服务器能够处理二进制数据,否则结果就很难预测。

这样一来,传输的数据可能会出现错误,或者传输中断,导致很多其他无法预料的问题。例如,如果你运行一个非常简单的套接字服务器,它只是把接收到的内容打印到标准输出(std::out),那么接收一个二进制文件很可能会搞坏你的控制台终端(你可以在自己的Linux机器上试试)。

当然,如果服务器是专门设计来接收和处理二进制数据的,那就没问题了,但通常情况下,服务器会把用户输入当作字符串来处理,这时候使用base64就显得很明智了。

撰写回答