【问题标题】:Xvfb server does not work under different userxvfb 服务器在不同的用户下不工作
【发布时间】:2013-07-14 23:24:15
【问题描述】:

我正在尝试在 Amazon EC2 实例上运行 Xvfb 服务器,然后让 selenium Firefox 驱动程序使用虚拟显示器来保存网站的屏幕截图。我以前使用的是 PhantomJS,但它无法加载我需要的所有类型的页面。

当我在远程 Amazon EC2 实例上的本地用户上运行此服务器时,它运行良好,但是当我尝试以“qauser”身份运行它时,我的 selenium Firefox 驱动程序无法连接到虚拟显示器;当我尝试初始化 webdriver 时它只是挂起。如果我尝试使用虚拟显示器启动 Firefox,我会收到“错误:尝试打开您的配置文件目录中的文件时访问被拒绝。”

如果我进入 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

【问题讨论】:

    标签: linux selenium selenium-webdriver supervisord xvfb


    【解决方案1】:

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

    根据this chromium issue,SELinux 错误已在最新的 Fedora 中得到修复,并可能向后移植到 RHEL。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我做了一个简单的测试脚本来作为 qauser 运行。 Strace 似乎没有返回任何有用的东西。 pastebin.com/SsvHz7F4
      猜你喜欢
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 2012-04-25
      相关资源
      最近更新 更多