gpt4 book ai didi

google-chrome - Selenium ChromeDriver - 如何作为守护进程运行和部署?

转载 作者:行者123 更新时间:2023-12-04 19:03:29 25 4
gpt4 key购买 nike

我在 headless Debian 7 VM 上设置了最新版本的 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 session 。
我还发现从 Fabric 调用 Screen 会立即返回;这反过来又以某种方式阻止了屏幕启动。我用 sleep 解决了这个问题上面调用,它允许 Screen 有足够的时间来创建 session 。这是预期的吗?或者这可能与我的问题有关吗?
手动运行 Fabric/Screen 命令并不能解决问题,即使它们改编自我在测试 VM 上使用的命令。任何指针?
作为事后的想法,我也希望能够开始 x11vnc服务器连接到 Xvfb,但如果我在 .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 启动它。

最佳答案

也许你可以考虑使用 supervisord而不是 screen管理您长期运行的流程。

关于google-chrome - Selenium ChromeDriver - 如何作为守护进程运行和部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21616282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com