Python selenium WebDriverException: Сообщение: процесс неожиданно закрыт со статусом 127 - PullRequest
0 голосов
/ 25 октября 2018

Я создал приложение Flask, которое позволяет пользователям вводить URL.Приложение вызывает функцию, которая использует Firefox Webdriver от Selenium, чтобы выйти и сделать снимок вводимого URL-адреса.Я получаю ошибку: WebDriverException: Message: Process unexpectedly closed with status 127

Я не уверен, что мне не хватает, любая помощь будет оценена.

Вот трассировка стека:

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

Вот код функции:

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()))

Если вызов Flask не используется, функция работает нормально и делается снимок экрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...