Python PIL保存了黑色图像

时间:2016-09-22 15:21:50

标签: python image selenium python-imaging-library

我正在尝试在网站上获取手机元素的屏幕截图。我保存整个页面的截图,获取元素坐标并在手机元素位置剪裁截图。但在裁剪后我得到了黑色图像。我不明白为什么,以及如何解决它。

我的代码:

# coding: utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.proxy import *
import time
from PIL import Image

driver = webdriver.Chrome(executable_path='chromedriver')
driver.get('https://www.avito.ru/moskva/audio_i_video/televizor_samsung_i_tumba_iz_stekla_k_nemu_838296913')
button = driver.find_element_by_xpath('//*[@id="i_contact"]/div[3]/div/span[1]/span')
button.click()
time.sleep(4)
element = driver.find_element_by_xpath('//*[@id="i_contact"]/div[3]/div/span[1]')
location = element.location
size = element.size
driver.save_screenshot('screenshot.png')
driver.quit()

im = Image.open('screenshot.png')

left = location['x']
top = location['y']
right = location['x'] + size['width']
bottom = location['y'] + size['height']


im = im.crop((left, top, right, bottom))
im.save('screenshot.png')

Selenium保存后的屏幕截图: enter image description here

裁剪后的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

我会检查“位置”的值。如果您的作物坐标在图像之外,那么您会看到黑色。例如-

im = im.crop((-300, -300, -200, -200))

会给出黑色图像。