2015-10-29 70 views
0

我使用Selenium web driverPython爲Web應用程序測試創建自動化腳本。我需要執行驗證,將比較兩個編碼爲png文件的字符串作爲base64:在同一網頁元素的頁面上保存的基本圖像和當前圖像。有一個在Selenium的方法,允許獲得頁面截圖作爲base64對象如何獲取特定網頁元素的圖像爲base64

driver.get_screenshot_as_base64()

可是如何才能讓base64屏幕不是整個頁面,而只是頁面上特定的圖像元素,而無需下載呢?

P.S.其他方式比較兩個圖像也可以接受:)

回答

0

有一個解答如何截取元素here的屏幕截圖的另一個問題的答案。一旦你有了,你應該能夠對這兩個圖像進行逐像素比較。你可以谷歌和查找代碼示例。

我在base64圖像上看不到很多信息。看起來這將是一個非常酷的簡單方法來比較兩張圖片,因爲您只需進行快速字符串比較,但硒似乎不支持在base64中截取元素的屏幕截圖。你可能需要做一些工作來獲取截圖,將它和參考圖像轉換爲base64,但這可能比僅僅使用一個庫或比較兩次以前完成的圖像更有效,網頁。

0

以下應根據文檔工作,但沒有,並且這裏有一個公開的問題:https://github.com/SeleniumHQ/selenium/issues/912。在此期間,我會建議https://stackoverflow.com/a/15870708/1415130

找到你的網頁元素,但是你想 - 看文檔Locating Elements

login_form = driver.find_element_by_id('loginForm') 

然後screen grab the element

screenshot = login_form.screenshot_as_base64() 

比較截圖,我使用枕頭。

+0

這不適用於Firefox。你使用什麼瀏覽器? 'Edge'? – Andersson

+0

道歉,你是對的,這是一個公開的問題:https://github.com/SeleniumHQ/selenium/issues/912 – birdsarah

+0

也不適用PhantomJS。對於幻影拋出'WebDriverException:消息:無效的命令方法'和Firefox'WebDriverException:消息:無法識別的命令'。一種解決方法是使用Javascript從圖像創建畫布,然後將其保存爲base64。 – erm3nda