0

我正在尝试在 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
4

2 回答 2

0

尝试在 RHEL 上运行 Chrome 时,我遇到了类似的问题,这是由于 SELinux 造成的。您可以尝试禁用 SELinux,然后测试您的设置。

根据这个 chromium 问题,SELinux 错误已在最新的 Fedora 中修复,并可能向后移植到 RHEL。

于 2014-05-28T23:38:32.010 回答
0

您可以尝试使用 strace 运行它的脚本来包装 Firefox。之后,重现问题并在日志中搜索症状,例如 grep for (stat|open).*EPERM(用于配置文件访问权限被拒绝的情况)。

于 2013-07-16T17:23:47.797 回答