I want to take a screenshot of an element without the background with selenium.webdriver.Firefox
from selenium import webdriver
from PIL import Image
CSS_SELECTOR = ".RNNXgb"
driver = webdriver.Firefox()
driver.get("https://google.com")
driver.find_element_by_css_selector(CSS_SELECTOR)
image = Image.open(io.BytesIO(element.screenshot_as_png))
image.save("myscreenshot.png", "png")
driver.quit()
This does not work because it replaces the white in the element too
def remove_color(img, rgba):
data = np.array(img.convert('RGBA')) # rgba array from image
pixels = data.view(dtype=np.uint32)[...,0] # pixels as rgba uint32
data[...,3] = np.where(pixels == np.uint32(rgba), np.uint8(0), np.uint8(255)) # set alpha channel
return Image.fromarray(data)
image = replace_color(image, 0xffffffff)
It does nothing
driver.execute_script("document.getElementById('hplogo').style.background = 'transparent'")
Only for Chromium, not Firefox
User contributions licensed under CC BY-SA 3.0