【问题标题】:Firefox runs in background in SelenideFirefox 在 Selenide 后台运行
【发布时间】:2018-10-16 11:41:35
【问题描述】:

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

SessionNotCreatedException

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

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

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

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

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

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

【问题讨论】:

  • 您考虑过尝试 Xvfb 吗?

标签: selenium gecko selenide


【解决方案1】:

为了在服务器上运行测试,服务器通常是一个 X 窗口系统,所以方法是运行一个虚拟显示器。

使用Xvfb 是最好的方法!你可以阅读它here

from xvfbwrapper import Xvfb

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

或者你可以使用PyVirtualDisplaylink 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 系统!

如您所见,here 在 Windows 上不起作用。

希望对您有所帮助!

【讨论】:

  • 谢谢,我会检查的:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 2021-04-06
  • 2011-08-19
  • 2011-12-28
相关资源
最近更新 更多