據我瞭解,ChromeDriver本身並沒有設定CSS的背景。因此,如果背景是透明的,爲什麼我沒有獲得透明的截圖?透過Selenium的無頭ChromeDriver的透明屏幕截圖
這就是所謂透明網站的截圖: 相同的屏幕截圖,但在後臺紅色div來展現,其中透明度應在於:
這裏是我的代碼:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from datetime import datetime
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(chrome_options=options)
driver.set_window_size(2560, 1600)
driver.get('https://twitter.com/realDonaldTrump/status/516382177798680576')
# driver.execute_script("$('body').append(`<div style='background: red; width: 100%; height: 100%;'></div>`);")
driver.save_screenshot('screenshots/' + str(datetime.now()) + '.png')
driver.quit()
我如何能夠創建該截圖的透明版本?
*編輯* 我做了一個如何完成這一點的要點。接受的答案幫助我達到了我可以弄明白的地步,這正是我想要的。然而,這個要點正確的解決了我的問題: https://gist.github.com/colexyz/f58834ff09ab07e3c1164667b753e77a
有這條線,你有評論,你有沒有嘗試改變,以這樣的:'driver.execute_script (「$('body').css('background-color','transparent');」)'?注意所有div層必須是'background-color:transparent'纔能有真正透明的背景,所以如果僅僅通過改變主體背景就不能工作,那麼你就必須用開發工具做一些測試和調整顏色。另外請記住,該網頁必須有jQuery,我不認爲Twitter的確如此,但我並不確定。 –
@ChristosLytras我試着將'background-color'設置爲'transparent',它仍然產生白色背景。 Twitter使用jQuery。我將如何去調整開發者工具? – Cole
只需在瀏覽twitter時點擊F12,轉到* Elements *選項卡,然後檢查內容的每個DIV子元素的樣式以獲取背景顏色屬性。 –