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'],