linux - Xvfb服务器不能在不同用户下工作

标签 linux selenium selenium-webdriver supervisord xvfb

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

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

如果我 su 到 qauser,然后运行 ​​Xvfb 和我的应用程序,它就可以正常工作。如果我以 qauser 身份运行 Xvfb,并以我自己的用户身份运行 webdriver,它就可以工作。当我以 qauser 身份运行 Xvfb 和我的应用程序时,就会出现此问题。有谁知道这可能是错误的吗?

我的 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

最佳答案

您可以尝试使用一个脚本封装 Firefox,并通过 strace 运行它。之后,重现问题并搜索日志以查找症状,例如grep for (stat|open).*EPERM(针对配置文件访问权限被拒绝的情况)。

关于linux - Xvfb服务器不能在不同用户下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17682323/

相关文章:

c - 终端中断 fork printf()

linux - 在 Ubuntu 中使用 ffmpeg 提取视频的时间

linux - 来自 shell 脚本的 sql

java - 使用 java 在 Selenium WebDriver 中按下按键(Ctrl + 鼠标单击)

java - WebElement 或 WebDriver 来调用 findElement 方法?

c# - 如何在 Selenium 中设置 Edge 的下载文件夹?

linux - Hive 中的韩语数据加载

selenium - 守夜人测试 : Set browser to fixed size

ajax - Selenium 等待条件

c# - Atata 框架上的 Link 和 DelegateLink 有什么区别?