如何在使用后关闭Xvfb

NOD*_*ODE 8 selenium xvfb robotframework

我在使用Xvfb的无头firefox中运行一些测试.但是,在我的测试完成后,我想恢复正常显示.但我无法做到这一点.这就是我在做什么.

  1. 打开终端
  2. sudo Xvfb:10 -ac&
  3. export DISPLAY =:10
  4. 使用RobotFramework + Selenium执行我的测试

在第4步之后,我想在同一个终端打开firefox,但我无法看到它,因为它指向:10显示.

我想知道如何关闭这个(xvfb:10)以便我可以打开firefox并查看它.

vme*_*zes 6

第二个命令末尾&的 告诉 Linux 在后台运行它的命令。您可以看到使用 运行的后台命令列表$ jobs。Ubuntu16.04上的示例:

$ sudo Xvfb :10 -ac &
[1] 31294
$ jobs -l
[1]+ 31294 Running                 sudo Xvfb :10 -ac &
Run Code Online (Sandbox Code Playgroud)

正如您在上面的输出中看到的,jobs -l显示了后台作业,输出的第二列是PID可用于将其杀死的$ sudo kill 31294.

另一个可能“更干净”的选项是启动时Xvfb只运行您想要的命令并自动退出,而不是让它在后台运行。这样你就可以将第 2,3 和 4 行替换为:

xvfb-run python my_selenium_tests.py
Run Code Online (Sandbox Code Playgroud)

只需替换python my_selenium_tests.py为运行测试的任何方式即可。它会Xvfb向它打开并在最后关闭。


Bry*_*ley 3

简单的解决方案是保留 DISPLAY 的旧值,将其更改为指向 xvfb,然后在运行测试后可以将其更改回保存的值。

这会使 xvfb 继续运行,因此您还应该获取该进程的 pid 并将其终止。否则,如果您运行这组步骤十几次,就会有十几个 xvfb 进程在后台运行。