Я создал приложение 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 не используется, функция работает нормально и делается снимок экрана.