如何在AWS EC2上使用xvfbwrapper运行Xvfb以记录Selenium无头会话的屏幕

qzwqbdag  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(160)

我在使用Xvfb运行Selenium会话以使用会话录制视频文件时遇到问题。下面是我的会话和 Package 器

from selenium import webdriver
from xvfbwrapper import Xvfb

class TestPages(unittest.TestCase):

    def setUp(self):
        self.xvfb = Xvfb(width=1280, height=720)
        self.addCleanup(self.xvfb.stop)
        self.xvfb.start()
        self.browser = webdriver.Chrome()
        self.addCleanup(self.browser.quit)

    def testUbuntuHomepage(self):
        self.browser.get('http://www.ubuntu.com')
        self.assertIn('Ubuntu', self.browser.title)

    def testGoogleHomepage(self):
        self.browser.get('http://www.google.com')
        self.assertIn('Google', self.browser.title)

if __name__ == '__main__':
    unittest.main()

会话退出,无错误且x1c 0d1x
问题是未在主目录或/temp目录中创建任何类型的文件

文件在哪里?

0x6upsns

0x6upsns1#

经过长时间研究,在AWS上运行该程序的多种方式很少发生脑震荡:
1.在AWS Linux上运行太复杂了,绝对推荐AWS Ubuntu EC2。这是由于缺乏信息和一些库不兼容(scrot,显示问题)。
1.在某些时候,FFMPEG会杀死所有内存,并导致ssh断开连接和其他问题。
这是我的最终解决方案,如何在AWS EC Ubuntu上录制Selenium内部发生的事情的视频。

from selenium import webdriver
    import time
    import os 
    import subprocess
    
    from pyvirtualdisplay.smartdisplay import SmartDisplay
    with SmartDisplay() as disp:
          print(os.environ.get("DISPLAY"))
          print ("before webdriver")
          driver = webdriver.Firefox()
          subprocess.call(['ffmpeg -y -video_size 1024x768 -rtbufsize 500M -framerate 24 -f x11grab -i :0.0 -preset ultrafast output.mp4 &'], shell=True)
          driver.get("YOUR WEBSITE URL")
          # YOUR SELENIUM CODE HERE 
          subprocess.call(["echo q"], shell=True)
    disp.stop()

相关问题