Python selenium WebDriverException: Message: Process unexpectedly closed with status 127

Viewed 676

I built a Flask app that allows users to input a URL. The app calls a function that leverages Selenium's Firefox Webdriver to go out and take a screen shot of the inputed URL. The error I am getting is: WebDriverException: Message: Process unexpectedly closed with status 127

I am not sure what I am missing any help would be appreciated.

Here is the stack trace:

File "/opt/scraper_ui/scraper_engine/simple_scraper.py", line 101, in 
page_shot_stitched
    driver = webdriver.Firefox(capabilities=cap, 
firefox_options=options, executable_path='/usr/local/bin/geckodriver')
  File "/opt/scraper_ui/scraper_ui_env/local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 170, in __init__
keep_alive=True)
  File "/opt/scraper_ui/scraper_ui_env/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 156, in __init__
    self.start_session(capabilities, browser_profile)
  File "/opt/scraper_ui/scraper_ui_env/local/lib/python2.7/site- 
packages/selenium/webdriver/remote/webdriver.py", line 251, in 
start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/opt/scraper_ui/scraper_ui_env/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 320, in execute
self.error_handler.check_response(response)
  File "/opt/scraper_ui/scraper_ui_env/local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
WebDriverException: Message: Process unexpectedly closed with status 127

Here is the function code:

def page_shot_stitched(**kwargs):
    url = kwargs.pop('url', None)
    site_folder = kwargs.pop('site_folder', None)
    options = Options()
    options.binary = '/usr/bin/firefox'
    options.add_argument("--headless")
    options.add_argument("--start-maximized")
    try:
        cap = DesiredCapabilities().FIREFOX
        cap["marionette"] = True
        driver = webdriver.Firefox(capabilities=cap, 
 firefox_options=options, executable_path='/usr/local/bin/geckodriver')
    driver.get(url)
        js = 'return Math.max( document.body.scrollHeight, 
document.body.offsetHeight,  document.documentElement.clientHeight,  
document.documentElement.scrollHeight,  
document.documentElement.offsetHeight);'
        scrollheight = driver.execute_script(js)
        slices = []
        offset = 0
        while offset < scrollheight:
            driver.execute_script("window.scrollTo(0, %s);" % offset)
            img = Image.open(StringIO(driver.get_screenshot_as_png()))
            offset += img.size[1]
            slices.append(img)
            screenshot = Image.new('RGB', (slices[0].size[0], scrollheight))
        offset = 0

        for img in slices:
            screenshot.paste(img, (0, offset))
            offset += img.size[1]
        screenshot.save('{0}.png'.format(site_folder),'PNG')
        driver.quit()
    except Exception as e:
        import traceback
        print traceback.format_exc()
        retriever_logger.error('Error {0}'.format(traceback.format_exc()))

When not using Flask calling the function works fine and a screenshot is taken.

0 Answers
Related