From f467f68d6cab7f72dd40880cf239fc48c66a7e12 Mon Sep 17 00:00:00 2001 From: Rodrigo Ferreira de Souza Date: Thu, 26 Jan 2017 15:26:22 -0200 Subject: [PATCH] Fix early quit exception --- .../behavior/featuredimage/subscriber.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/collective/behavior/featuredimage/subscriber.py b/src/collective/behavior/featuredimage/subscriber.py index a580e79..29b2ea8 100644 --- a/src/collective/behavior/featuredimage/subscriber.py +++ b/src/collective/behavior/featuredimage/subscriber.py @@ -3,6 +3,9 @@ from PIL import Image from plone.namedfile.file import NamedBlobImage from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.ui import WebDriverWait import signal import transaction @@ -16,13 +19,14 @@ def _get_screenshot(page): browser.get(page) data = browser.get_screenshot_as_png() # crop image - el = browser.find_element_by_id('featuredimage') - # XXX: quit() does not terminate PhantomJS process - # https://github.com/SeleniumHQ/selenium/issues/767 - browser.service.process.send_signal(signal.SIGTERM) - browser.quit() + el = WebDriverWait(browser, 10).until( + EC.presence_of_element_located((By.ID, 'featuredimage')) + ) + # Put these lines after browser.quit will raise URLError exception location = el.location size = el.size + browser.service.process.send_signal(signal.SIGTERM) + browser.quit() im = Image.open(StringIO(data)) im = im.crop(( location['x'], location['y'],