Firefox在Selenide的后台运行



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

SessionNotCreatedException

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

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

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

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

并将硒化德更新到 5.0.0,但仍然失败

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

对于在服务器上运行测试,服务器通常是一个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 窗口系统!

正如你在这里看到的,它不适用于窗口。

希望对您有所帮助!

最新更新