Firefox 在 Selenide 后台运行

Firefox runs in background in Selenide

通常,问题是相反的,如何让 Firefox 运行 处于后台。前段时间我用 Selenide 写了一些基本测试,但是今天我尝试 运行 它(像往常一样)在服务器上,我得到一个错误

SessionNotCreatedException

我开始寻找结果,我注意到,当我 运行ning 现在从我的计算机进行本地测试时,Firefox 没有出现。我可以在任务管理器中看到 Firefox 的任务,完成截图时出现错误,但浏览器打不开。

我注意到有很多关于如何使用无头选项 运行 进行测试的问题,但我需要相反的东西,这可能是 SessionNotCreatedException 的问题,服务器看不到浏览器。

据我所知,Selenide 运行 是最新的 gecko 驱动程序(正在更新)。我尝试在开始时设置一些选项:

    FirefoxOptions options = new FirefoxOptions();
    options.setCapability("marionette", false);
    options.setCapability("headless", false);

并将 Selenide 更新到 5.0.0,但仍然失败

编辑:我无法使用任何其他浏览器

一般在服务器上进行运行ning测试,服务器是Xwindow系统,所以方法是运行一个虚拟显示器。

使用 Xvfb is the best way for that! you can read about it here.

from xvfbwrapper import Xvfb

with Xvfb() as xvfb:
    # launch virtual display here.
    # start your webdrivr in the virtual display

或者您可以使用 PyVirtualDisplay link here.

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()

display.stop()

备注

确保您的服务器是 X Window 系统!

如您所见 它不适用于 windows。

希望对您有所帮助!