我正在尝试在 Amazon EC2 实例上运行 Xvfb 服务器,然后让 selenium Firefox 驱动程序使用虚拟显示器来保存网站的屏幕截图。我以前使用 PhantomJS,但它无法加载我需要的所有类型的页面。
当我在远程 Amazon EC2 实例上的本地用户上运行该服务器时,它运行良好,但是当我尝试以“qauser”身份运行它时,我的 selenium Firefox 驱动程序无法连接到虚拟显示器;当我尝试初始化 webdriver 时它只是挂起。如果我尝试使用虚拟显示器启动 Firefox,我会收到“错误:尝试打开配置文件目录中的文件时访问被拒绝”。
如果我 su 进入 qauser,然后运行 Xvfb 和我的应用程序,它工作正常。如果我以 qauser 身份运行 Xvfb,并以我自己的用户身份运行 webdriver,它就可以工作。当我将 Xvfb 和我的应用程序作为 qauser 运行时,就会出现问题。有没有人知道这可能是错误的?
我的 Xvfb 服务器和创建 webdriver 的应用程序使用 supervisord 运行。配置发布在这里:
[program:QaServer]
command = python /opt/corp/qa_tool/main.py
environment = PATH='$PATH:/opt/bin:/usr/local/bin:/usr/bin', DISPLAY='localhost:99'
user = qauser
directory = /home/qauser
priority = 1
stdout_logfile = /opt/corp/qaData/qaTool.log
redirect_stderr = true
[program:Xvfb]
command = Xvfb :99
user = qauser
directory = /home/qauser
priority = 2
stdout_logfile = /opt/corp/qaData/qvfb.log
redirect_stderr = true