【问题标题】:Selenium ChromeDriver - How to run as a daemon and deploy?Selenium ChromeDriver - 如何作为守护进程运行和部署?
【发布时间】:2014-02-06 23:26:08
【问题描述】:

我在无头 Debian 7 虚拟机上设置了最新版本的 Selenium Server、ChromeDriver 和 Chrome,通过 Screen 手动运行它,Chrome 在 Xvfb 中运行。这工作得很好,我现在想将它转移到生产 Ubuntu 12.04 VM。为了安全起见,我想以锁定用户身份运行它,并尽可能靠近守护进程,以便无人看管。
我编写了一个 Fabric 脚本来处理部署,但遇到了最后一个障碍——启动 Selenium 和 Xvfb。 Selenium 使用自定义 .screenrc 在 Screen 内运行,该 .screenrc 也会启动 Xvfb,但我怀疑 DISPLAY 变量没有正确导出 - 我已将 VNC 放入帧缓冲区并启动了我的 RemoteWebDriver 项目,该项目连接到 Selenium 并启动 ChromeDriver 和Chrome,但没有出现 Chrome 窗口,并且项目在 60 秒后超时。我在 .bashrc 中为 selenium-daemon 用户添加了以下行:

export DISPLAY=:10

在 .screenrc 中:

screen -t 'Xvfb' 0 /usr/bin/Xvfb :10 -screen 0 1366x768x24 -ac
screen -t 'Selenium' 1 /bin/bash --rcfile /home/selenium-daemon/.bashrc -c '/usr/bin/java -jar /usr/local/bin/selenium-server-standalone-2.39.0.jar -Dwebdriver.chrome.driver=/usr/local/bin/chromedriver -port 4444 > /tmp/selenium.log'

Fabric 正在启动屏幕

sudo("screen -dmS selenium -c /home/selenium-darmon/.screenrc & sleep 5", user="selenium-daemon")

我尝试显式设置 --rcfile,因为我不确定它是否被使用,但这并没有帮助。我很确定这是问题所在;在我的测试虚拟机上,我遇到了类似的问题,并通过确保正确设置了 DISPLAY 变量来解决。目前selenium-daemon 用户已被锁定,因此我无法连接到 Screen 会话。
我还发现从 Fabric 调用 Screen 会立即返回;这反过来又以某种方式阻止了屏幕启动。我通过上面的sleep 调用解决了这个问题,这让 Screen 有足够的时间来创建会话。这是预期的吗?或者这可能与我的问题有关吗?
手动运行 Fabric/Screen 命令并不能解决问题,即使它们改编自我在测试 VM 上使用的命令。有什么建议吗?
作为事后的想法,我还希望能够启动连接到 Xvfb 的x11vnc 服务器,但是如果我在 .screenrc 中对其进行工作调用,它完全不会出现。即使在启动之前调用sleep 也不会启动它:

screen -t VNC 2 /usr/bin/x11vnc -display :10 -bg -nopw -xkb -listen 127.0.0.1

编辑:我想我解决了 VNC 问题,复制粘贴命令通常是个坏主意!回去把一些标志改成:

screen -t VNC 2 /usr/bin/x11vnc -display WAIT:10 -nopw -xkb -forever -shared -listen 127.0.0.1 -logfile /tmp/x11vnc.log

取得更大的成功。我已经让 ChromeDriver 手动启动,现在正在研究是否可以使用 Fabric 启动它。

【问题讨论】:

    标签: google-chrome ubuntu selenium fabric gnu-screen


    【解决方案1】:

    也许您可以考虑使用supervisord 而不是screen 来管理您长时间运行的进程。

    【讨论】:

    • 完美!正是我需要的!感谢您的建议,我现在可以使用它(无需给selenium-daemon 一个外壳!),这应该很容易编写脚本。非常感谢。
    猜你喜欢
    • 2023-03-02
    • 2013-07-12
    • 2015-07-12
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多