首页 > 解决方案 > Firefox 在 Selenide 后台运行

问题描述

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

SessionNotCreatedException

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

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

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

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

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

编辑:我不能使用任何其他浏览器

标签: seleniumgeckoselenide

解决方案


对于在服务器上运行测试,服务器通常是一个 X 窗口系统,所以实现它的方法是运行一个虚拟显示器。

使用Xvfb是最好的方法!你可以在这里阅读。

from xvfbwrapper import Xvfb

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

或者你可以PyVirtualDisplay 在这里使用链接

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 上不起作用。

希望这对你有帮助!


推荐阅读