2014-08-29 22 views
0

我想知道其中一個的優點/缺點是什麼?Selenium get_screenshot_as_file vs get_screenshot_as_base64?

我與Xvfb來充當顯示器無頭遠程實例運行鍼對Selenium服務器。

這兩種方法很好地工作,所得截屏文件(如果我轉換中的Base64一個,並將其保存爲圖像文件)是相同的文件大小和外觀是相同的。

那麼,爲什麼我要使用/不使用一個在另一個?

+1

使用Base64你的形象是安全發送通過網絡,同時保存到文件給你,好了,一個文件,它是不是安全sendover一個套接字但沒有對其進行編碼。 – 2014-08-29 09:49:23

+0

謝謝。你能擴展文件類型捕獲的「不安全」部分嗎?經過反對一個遠程實例的嘗試,有關的映像文件非常高興地回到了我的身邊?將與base64版本一起使用,但我仍然很好奇爲什麼另一個不被認爲是安全的。這是安全嗎?或者「可能會損壞」的東西? – ColinMcC 2014-08-29 09:52:42

+0

我會把它寫成一個答案,因爲它會變得冗長! – 2014-08-29 09:54:41

回答

2

隨着get_screenshot_as_file,截圖保存獲取到一個二進制文件,同時用get_screenshot_as_base64這將返回編碼的截圖版本的base64。

那麼,爲什麼會有人使用base64版本? base64背後的全部理念是它允許您創建二進制數據的ASCII表示,這將增加數據大小,但也可以讓您實際使用它。例如,如果您嘗試將二進制數據流發送到套接字,而不進行編碼,那麼除非服務器準備好處理二進制數據,否則結果很難預測。

由於被傳輸的數據可以被格式錯誤的結果,切轉移早期和引起許多是幾乎不可能來預測其他結果。例如,如果你要運行一個非常簡單的套接字服務器,它只是將它接收到std :: out時打印出來,接收二進制文件很可能會損壞控制檯終端(你可以在你自己的Linux機器上嘗試它)。

當然,如果該服務器被設計爲接收和處理二進制數據,那麼這將不會是一個問題,但最常見的服務器端會解釋用戶輸入的字符串,這使得使用Base64一個明智的選擇。

+0

再次感謝您的詳細解釋。我會堅持使用base64版本來保證安全。 – ColinMcC 2014-08-29 10:40:53

相關問題