Selenium 如何在AWS Lambda上使用OESMesa模拟WebGL?

Selenium 如何在AWS Lambda上使用OESMesa模拟WebGL?,selenium,lambda,webgl,e2e-testing,Selenium,Lambda,Webgl,E2e Testing,我想用WebGL拍摄一个网站的截图。我不必使用GPU来打开那个网站。使用仿真对我来说已经足够了 一开始,我已经试过用无头铬来做这件事。这可以拍摄有序网站的截图。但是,它不适用于WebGL画布。 我认为其中一种可能是使用OSMesa或类似的东西来模拟OpenGL 我用了我所有的策略来克服这个问题。这真的有可能吗? 如果是,请告诉我怎么做。如果没有,我想知道原因 谢谢。是的,这是可能的 您需要以下各项的正确组合: 无头铬二元合金 libosmesa.os二进制文件(在同一目录中) 使用正确的标志启动

我想用WebGL拍摄一个网站的截图。我不必使用GPU来打开那个网站。使用仿真对我来说已经足够了

一开始,我已经试过用无头铬来做这件事。这可以拍摄有序网站的截图。但是,它不适用于WebGL画布。 我认为其中一种可能是使用OSMesa或类似的东西来模拟OpenGL

我用了我所有的策略来克服这个问题。这真的有可能吗? 如果是,请告诉我怎么做。如果没有,我想知道原因

谢谢。

是的,这是可能的

您需要以下各项的正确组合:

  • 无头铬二元合金
  • libosmesa.os二进制文件(在同一目录中)
  • 使用正确的标志启动chrome headless,例如(有关完整详细信息,请参阅链接):
    ['--use gl=osmesa'、'--enable webgl'、'--ignore gpu blacklist'、'--homedir=/tmp'、'--single process'、'--data path=/tmp/data path'、'--disk cache dir=/tmp/cache dir']
  • 无服务器chrome github项目上的这个线程讨论了这个问题,并提供了一些二进制文件,我使用这些二进制文件使用Page.captureScreenshot()在AWS Lambda上捕获WebGL内容的屏幕截图

    (见@apalchys于8月28日发表的评论)

    这个特别的例子使用了似乎是未来首选的选项


    但是请注意,我无法使用此版本使用
    Page.printToPDF()
    创建PDF-WebGL内容只是显示为空白/白色。但是,我也能够使用使用osmesa的早期版本获得
    Page.printToPDF()
    ,请参见

    您想截图了解具体内容,以及从“何处”截图?我很想回答:如果你想截屏,请查看你的操作系统API以获取屏幕缓冲区数据访问,无论是OpenGL、WebGL还是Mesa。。。为了回答您的问题:要使用Mesa模拟WebGL(OpenGLES2.0),如果我认为OESMesa是什么,也许从这里开始@谢谢你的回复。我想用AWS lambda来拍摄我的网页截图,这些网页经常使用WebGL的东西。我也使用了OSMesa,但我不知道在lambda上使用它。@gman是的,我可以在我自己的Ubuntu环境上使用它。但是,由于lambda的限制,我不认为我不能运行yum命令。我必须在EC2容器上构建它们才能在lambda上使用它。但是,我不知道应该配置什么。哇!真棒的回答!这就是我想要的。谢谢。