据我所知,ChromeDriver本身并不设置背景颜色,而是由CSS设置。因此,如果背景是透明的,为什么我截图时没有透明的效果呢?
这是一个应该是透明的网站截图: 同样的截图,但在背景中加了一个红色的div来显示透明度的位置: 下面是我的代码:
我该如何创建那个屏幕截图的透明版本?
*** 编辑 *** 我制作了一个代码片段来完成这个任务。接受的答案帮助我找到了解决方案,而这就是我想要的。然而,这个代码片段才是我问题的正确解决方案: https://gist.github.com/colecrtr/f58834ff09ab07e3c1164667b753e77a
这是一个应该是透明的网站截图: 同样的截图,但在背景中加了一个红色的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/colecrtr/f58834ff09ab07e3c1164667b753e77a
driver.execute_script("$('body').css('background-color', 'transparent');")
?请注意,所有的div层都必须是background-color: transparent
才能真正实现透明背景,如果只是更改主体背景颜色无法实现,你需要使用开发者工具进行一些测试和调整。另外请记住,页面必须有jQuery库,但我不确定twitter是否有该库。 - Christos Lytrasbackground-color
设置为transparent
,但仍然出现白色背景。Twitter确实使用jQuery。我该如何调整开发者工具? - Cole