selenium - MacOS 运行时,在 lambda 上调用 Screenshot_as_base64 时出错

标签 selenium aws-lambda selenium-chromedriver

我正在 MacOS 上使用相同的代码进行测试,然后在 AWS lambda 上进行部署。除了一个获取屏幕截图的功能外,一切正常。

对于AWS lambda,我正在使用https://github.com/21Buttons/pychromeless中描述的设置

Chrome 驱动程序 https://chromedriver.storage.googleapis.com/2.37/chromedriver_linux64.zi

headless Chrome https://github.com/adieuadieu/serverless-chrome/releases/download/v1.0.0-37/stable-headless-chromium-amazonlinux-2017-03.zip

def get_image_fullpage_screenshot(browser):
    logger.info("get_image_fullpage_screenshot")
    required_width = browser.execute_script('return document.body.parentNode.scrollWidth')
    required_height = browser.execute_script('return document.body.parentNode.scrollHeight')
    browser.set_window_size(required_width, required_height)
    logger.info("Browser required_width %d , required_height %d" % (required_width, required_height))
    # driver.save_screenshot(path)  # has scrollbar
    body_element = browser.find_element_by_tag_name('body')
    logging.info("Got body")
    logging.info(dir(body_element))
    bs4 = None
    try:
        bs4 = body_element.screenshot_as_base64
        logging.info("Worked body_element.screenshot")
    except Exception as e:
        logging.info("Can't body_element.screenshot_as_base64 %s " %str(e))
    return bs4

我收到的错误是

Can't body_element.screenshot_as_base64 Message: unknown command: session/1423106400075214591ff2e5def5f55a/element/0.5505971093767275-1/screenshot

但是,对象上的 is dir 会给出以下结果:

    ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_execute', '_id', '_parent', '_upload', '_w3c', 'clear', 'click', 'find_element', 'find_element_by_class_name', 'find_element_by_css_selector', 'find_element_by_id', 'find_element_by_link_text', 'find_element_by_name', 'find_element_by_partial_link_text', 'find_element_by_tag_name', 'find_element_by_xpath', 'find_elements', 'find_elements_by_class_name', 'find_elements_by_css_selector', 'find_elements_by_id', 'find_elements_by_link_text', 'find_elements_by_name', 'find_elements_by_partial_link_text', 'find_elements_by_tag_name', 'find_elements_by_xpath', 'get_attribute', 'get_property', 'id', 'is_displayed', 'is_enabled', 'is_selected', 'location', 'location_once_scrolled_into_view', 'parent', 'rect', 'screenshot', 'screenshot_as_base64', 'screenshot_as_png', 'send_keys', 'size', 'submit', 'tag_name', 'text', 'value_of_css_property']

所以这个函数确实存在但不存在?

如有任何建议,我们将不胜感激

最佳答案

事实证明 lambda 内存不足,当然,没有给出错误。将内存增加到 1024MB 后,一切都按预期进行。

理智恢复了。

关于selenium - MacOS 运行时,在 lambda 上调用 Screenshot_as_base64 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54139007/

相关文章:

python - "Lambda can' t 找到文件 lambda_function.py": Error while invoking lambda function from ZIP file

azure - 是否可以将 .net core Web api 发布到 azure 函数?

python - selenium.common.exceptions.WebDriverException : Message: unknown error: Chrome failed to start: crashed with ChromeDriver and Selenium in Python

javascript - 如何在 NodeJS Selenium 中使用代理?

selenium - 确定 jqGrid 是否已加载并准备好使用 Selenium 的最佳方法

aws-lambda - aws lambda 上没有名为 'psycopg2' 的模块。解决这个问题的最佳方法是什么?

python - 如何通过 selenium 和 python 从下拉菜单中选择元素?

c# - 你如何在 Selenium 中设置 ChromeDriver 的端口?

python - 无法让看门狗观察者停止/加入(python)

javascript - Selenium 功能测试结构和实践