linux机器上的headless firefox浏览器是不是需要设置DISPLAY

Posted

技术标签:

【中文标题】linux机器上的headless firefox浏览器是不是需要设置DISPLAY【英文标题】:Is it required to set the DISPLAY for headless firefox browser on linux machinelinux机器上的headless firefox浏览器是否需要设置DISPLAY 【发布时间】:2019-02-23 09:23:48 【问题描述】:

我想运行无头浏览器,下面是相同的代码。 但是,当我运行它时。它显示“错误:未指定 DISPLAY 环境变量”

try 
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("webdriver.log.driver", "INFO");
profile.setPreference("webdriver.log.file", targetDir + File.separator + "firefoxSeleniumServer.log");
profile.setPreference("browser.download.folderList",2);
profile.setPreference("browser.download.manager.showWhenStarting",false);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk","text/csv;text/plain");
if(platform.equalsIgnoreCase("linux")) 
DesiredCapabilities desiredCap = DesiredCapabilities.firefox();
profile.setPreference("browser.download.dir",System.getProperty("user.dir")+ File.separator + "target");
System.setProperty("webdriver.gecko.driver", "/test/geckodriver/geckodriver");
System.setProperty("webdriver.firefox.bin","/usr/bin/firefox/firefox");
desiredCap.setCapability("headless", true);
driver = new FirefoxDriver();

但是,当我设置显示时,它显示无法在 DISPLAY:99 上打开 firefox

我也尝试设置 xvfb。但这也没有用。

由于我在这里使用 gekco 驱动程序,我是否需要进行更多配置。

【问题讨论】:

您完成了创建配置文件和功能的所有工作,但是您在不使用它们的情况下实例化了 FirefoxDriver()! 【参考方案1】:

我认为您应该将DesiredCapabilities 对象作为参数提供给FirefoxDriver 构造函数:

参考文献

javadoc 对应于FirefoxDriver。 What is the use of DesiredCapabilities in Selenium WebDriver?

【讨论】:

不推荐使用上面的 selenium3。我也尝试过关注,但仍然面临同样的问题。 binary = new FirefoxBinary(new File("/bin/firefox/firefox")); options.setBinary(binary); driver = new FirefoxDriver(options); 但是您是否尝试过使用已弃用的类?

以上是关于linux机器上的headless firefox浏览器是不是需要设置DISPLAY的主要内容,如果未能解决你的问题,请参考以下文章

sh 干净的firefox-headless

Selenium+Headless Firefox

Windows与Linux(硒)上的Chrome和Firefox

Firefox headless 不能在 Docker 中以非 root 用户身份工作

无法从 AWS 机器上的 python 中的 selenium 调用 firefox

Firefox 无头在无头 redhat linux 机器上崩溃