Selenium:在Linux Server中截取屏幕截图时获取空白图像(使用Xvfb)

时间:2018-01-16 12:55:59

标签: linux selenium xvfb

Chrome版本:61到63

Chrome网络驱动程序:2.33到2.35

我无法在我使用Xvfb运行的selenium程序中获取屏幕截图。

((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);

程序在Windows机器上运行良好,我使用上面的代码获得截图。但是,当我在Linux服务器上运行该程序时,使用Xvfb我得到一个空白的白色屏幕截图,没有别的。

2 个答案:

答案 0 :(得分:1)

那解决了我的问题:

        ChromeOptions chromeOptions = new ChromeOptions();  

        HashMap<String, Object> chromePrefs = new HashMap<>();
        chromePrefs.put("profile.default_content_settings.popups", 0);  
        chromePrefs.put("intl.accept_languages", "English");
        chromeOptions.setExperimentalOption("prefs", chromePrefs);

        chromeOptions.addArguments("--no-sandbox");
        chromeOptions.addArguments("enable-automation");
        chromeOptions.addArguments("--headless"); //should be enabled for Jenkins
        chromeOptions.addArguments("--disable-dev-shm-usage"); //should be enabled for Jenkins
        chromeOptions.addArguments("--window-size=1920x1080"); //should be enabled for Jenkins
        chromeOptions.addArguments("--disable-notifications");
        chromeOptions.addArguments("--disable-extenstions");
        chromeOptions.addArguments("--disable-gpu");
        chromeOptions.addArguments("--dns-prefetch-disable");
        chromeOptions.addArguments("disable-infobars");
        chromeOptions.addArguments("force-device-scale-factor=0.65");
        chromeOptions.addArguments("high-dpi-support=0.65");
        chromeOptions.setPageLoadStrategy(PageLoadStrategy.NORMAL);
        driver = new ChromeDriver(chromeOptions);

答案 1 :(得分:0)

在浏览网络之后,我找到了一个解决方案,我很乐意分享它,这样其他人就不会花太多时间在上面。

我添加了一个参数:

chromeOptions.AddArgument("--disable-gpu");

我希望对您有用