【发布时间】:2018-03-21 06:19:40
【问题描述】:
据我了解,ChromeDriver 本身不会设置背景,CSS 会。因此,如果背景是透明的,为什么我没有得到透明的截图?
这是所谓透明网站的截图: 相同的屏幕截图,但在背景中有一个红色 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 有,但我不太确定。 -
@ChristosLytras 我尝试将
background-color设置为transparent,但它仍然导致白色背景。 Twitter 确实使用了 jQuery。我将如何调整开发者工具? -
浏览推特时按F12,进入元素选项卡,然后检查内容的每个DIV子元素的样式以获取背景颜色属性。
-
很遗憾,要点的链接被破坏了。
-
@BradRoot 我最近更改了我的用户名,这破坏了链接。我已将其更新为我的新用户名 :-)
标签: python-3.x selenium selenium-chromedriver