как передать местоположение в selenium_driver.save_screenshot ("test.png") в AWS Lambda? Невозможно сохранить скриншоты из aws лямбды - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь написать AWS лямбда-функцию, которая будет делать снимок экрана с URL, переданным в python. Однако я не могу найти способ напрямую загрузить эти изображения в локальную систему или загрузить их в s3.

Я использую селен с безголовым chrome и после создания снимка экрана с помощью драйвера. save_screenshot ("test.png") (который работает локально и сохраняет изображения в месте расположения кода), лямбда-функция выдает ошибку.

Пожалуйста, смотрите мой код ниже!

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os

def lambda_handler(event, context):
    # TODO implement
    print("Starting google.com")
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--window-size=1280x1696')
    chrome_options.add_argument('--hide-scrollbars')
    chrome_options.add_argument('--enable-logging')
    chrome_options.add_argument('--log-level=0')
    chrome_options.add_argument('--v=99')
    chrome_options.add_argument('--single-process')
    chrome_options.add_argument('--data-path=/tmp/data-path')
    chrome_options.add_argument('--ignore-certificate-errors')
    chrome_options.add_argument('--homedir=/tmp')
    chrome_options.add_argument('--disk-cache-dir=/tmp/cache-dir')
    chrome_options.add_argument('user-agent=Mozilla/5.0 (X11; Linux x86_64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36')
    chrome_options.binary_location = os.getcwd() + "/bin/headless-chromium"
    print("reaching here")
    driver = webdriver.Chrome(chrome_options=chrome_options)
    page_data = ""
    if 'url' in event.keys():
        driver.get(event['url'])
        page_data = driver.page_source # working fine till here
        print(page_data)
        driver.save_screenshot("screenshot.png") #error here

    driver.close()
    return page_data

1 Ответ

1 голос
/ 21 февраля 2020

Я предложу получить изображение как базу 64 и сохранить в DynamoDB ..

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